ホーム > サポート > SophiaCompress(Java) OASIS 技術 FAQ

SophiaCompress(Java) OASIS 技術 FAQ

全般

SophiaCompress(Java) OASIS の HostID.exe がウイルスと認識されるのですが … ?

質問の詳細 :
ウイルス対策ソフトによって SophiaCompress(Java) OASIS の HostID.exe がウイルスと認識されるのですが、どうすれば良いでしょうか?
Version :

5.0.0、4.*.*

答え :

Symantec社やMcAfee社などのウイルス対策ソフトによって、 SophiaCompress(Java) OASIS の HostID.exe がウイルスと認識されることを確認しています。

これはウイルス対策ソフトの誤認識によるものであり、 そのままお使いいただいても、お使いの PC に被害が及ぶことはありません。

対応策 :

この問題は SophiaCompress(Java) OASIS 5.0.1 で解決されました。

SophiaCompress(Java) OASIS 5.0.1 以上にバージョンアップする、 もしくは、SophiaCompress(Java) OASIS 5.0.1 を別のダミーのパソコンにインストールし、これに含まれる HostID.exe を取り出して、 お使いのバージョンの SophiaCompress(Java) OASIS に含まれる HostID.exe を置き換えてください。

SophiaCompress(Java) OASIS をインストールできないのですが・・・?

Version :

すべての Version

答え 1 :

SophiaCompress(Java) OASIS は Java 2 SDK 1.3.1 または 1.4.2 のインストールを前提にしています。

対処法: SophiaCompress(Java) OASIS をインストールする前に Java 2 SDK 1.3.1 または 1.4.2 をインストールします(Java 2 SDK 1.4.2 を推奨)。

答え 2 :

SophiaCompress(Java) OASIS は JRE(Java Runtime Environment) 1.4.2 または 1.5.0 のインストールを前提にしています。

対処法: SophiaCompress(Java) OASIS をインストールする前に JRE(Java Runtime Environment) 1.4.2 または 1.5.0 をインストールします。

J2SE 1.4.2 ダウンロードサイト :

Java 2 Platform, Standard Edition, v 1.4.2 (J2SE) は、下記のサイトからダウンロードできます。

Download Java 2 Platform, Standard Edition, v 1.4.2 (J2SE)

SophiaCompress(Java) OASIS が起動しないのですが・・・?

Version :

すべての Version

答え 1 :

SophiaCompress(Java) OASIS の起動には JRE 1.4.2 または 1.5.0 が必要です。

対処法: お使いのパソコンの JRE(Java Runtime Environment)のバージョンを 1.4.2 または 1.5.0 に設定して、SophiaCompress(Java) OASIS を起動します。

参考情報 : Java のバージョン切り替え方法

答え 2 :

javaw.exeWindows XP SP2 のデータ実行防止機能の対象となっている可能性があります。

対処法: Windows XP SP2 の『データ実行防止( DEP )』の設定を、『重要な Windows のプログラムおよびサービスについてのみ有効にする』を ON にします。

参考情報 : Windows XP SP2 のデータ実行防止機能について

答え 3 :

"Could not find main class. Program will exit." のダイヤログが表示される場合は、拡張子「JAR」の設定が正しく設定されていない可能性があります。

対処法: Javaw.exe のパラメーターが「 -jar "%1" %* 」となっているか確認します。

参考情報 : Java のバージョン切り替え方法 : 7. 「アクションを実行するアプリケーション」の「・・・¥Javaw.exe"」 の後に「-jar "%1" %*」 パラメーターを追加し、「OK」ボタンを押す

答え 4 :

SophiaCompress(Java) OASIS のライセンスファイル licence.dat のサイズが何らかの理由により 0 バイトになっている可能性があります。

対処法:SophiaCompress(Java) OASIS のライセンスファイル licence.dat を直接 SophiaCompress(Java) OASIS の本体 scompress.jar があるフォルダに格納します。

デフォルトでインストールした場合(製品版)、C:\Program Files\Sophia Cradle\SophiaCompress(Java) OASIS\scompress にライセンスファイル licence.dat を格納します。

(評価版の場合は、C:\Program Files\Sophia Cradle\SophiaCompress(Java) OASIS Trial\scompress です)

答え 5 :

SophiaCompress(Java) OASIS のインストールが完全になされていない可能性があります。

対処法:SophiaCompress(Java) OASIS をアンインストールし、再インストールします。

それでも駄目な場合は、Java 2 SDK および JRE をアンインストールし、再インストールします。

アプリが圧縮できないのですが・・・?

Version :

NTTDoCoMo : DoJa 5.* / DoJa 4.1 の Java アプリを圧縮するとき

答え :

プロファイル設定の[プロファイル別ライブラリ]に、" dbgclasses.zip "を追加登録していませんか?"

原因:dbgclasses.zip "はデバッグ用のライブラリです。

対処法 : プロファイル設定の[プロファイル別ライブラリ]に登録されている " dbgclasses.zip "を削除します。

Version :

5.0.1、5.0.0、4.6.*、4.5.*、4.4.*、4.3.*

答え :

症状: SophiaCompress(Java) OASIS がクラス融合オプションを ON にして圧縮すると、 Invalid constant pool reference エラーで異常終了します。

対処法:この不具合は、SophiaCompress(Java) OASIS 5.0.2 で解決されました。 SophiaCompress(Java) OASIS 5.0.2 以降のバージョンをご利用ください。

Version :

5.0.1、5.0.0、4.6.*、4.5.*、4.4.*、4.3.*

答え :

症状:SophiaCompress(Java) OASIS がクラス融合オプションを ON にして圧縮すると、 ClassFormatError エラーで異常終了します。

原因 : 携帯 Java アプリでは、ひとつのクラスに付き 2000 個までのフィールドしか保持できません。 この不具合は、クラス融合をした結果、フィールド数が 2001 以上になるときに発生します。 多くの場合は、大量の定数変数を定義したクラスと融合することによって発生する不具合なので、 SophiaCompress(Java) OASIS では、フィールド数が 200 を超えるクラスはクラス融合の対象外とすることでこの問題の発生を回避するようにしています。

対処法:この不具合は、SophiaCompress(Java) OASIS 5.0.2 で解決されました。 SophiaCompress(Java) OASIS 5.0.2 以降のバージョンをご利用ください。

Version :

5.0.1、5.0.0、4.6.*、4.5.*、4.4.*、4.3.*

答え :

症状: スタックマップ最適化オプションと try 〜 catch ブロック削除オプションを同時に ON にして圧縮したときに、 java.lang.NullPointerException エラーで異常終了します。

対処法:この不具合は、SophiaCompress(Java) OASIS 5.0.2 で解決されました。 SophiaCompress(Java) OASIS 5.0.2 以降のバージョンをご利用ください。

Version :

5.0.1、5.0.0、4.6.*、4.5.*、4.4.*、4.3.*

答え :

症状: スタックマップ最適化オプションとメソッド共有オプションを同時に ON にして圧縮したときに、 プリベリファイエラーで異常終了します。

対処法:この不具合は、SophiaCompress(Java) OASIS 5.0.2 で解決されました。 SophiaCompress(Java) OASIS 5.0.2 以降のバージョンをご利用ください。

Version :

5.0.1、5.0.0、4.6.*、4.5.*、4.4.*、4.3.*

答え :

症状: スタックマップ最適化オプションとメソッド共有オプションと未使用メソッド削除オプションを同時に ON にして圧縮したときに、 プリベリファイエラーで異常終了します。

対処法:この不具合は、SophiaCompress(Java) OASIS 5.0.2 で解決されました。 SophiaCompress(Java) OASIS 5.0.2 以降のバージョンをご利用ください。

Version :

4.6.*、4.5.*、4.4.*、4.3.*

答え :

症状:SophiaCompress(Java) OASIS が圧縮に失敗する。

対処法:SophiaCompress(Java) OASIS の圧縮オプション「スタックマックの最適化(新規クラス作成)」と「クラス変数配列化」は必ずしも全てのアプリに適用できないことが確認されています。

SophiaCompress(Java) OASIS の圧縮オプション 「スタックマックの最適化(新規クラス作成)」と「クラス変数配列化」を「オフ」にしてお使いください。 また、プリベリファイヤは携帯 Java SDK 標準のプリベリファイヤをお使いください。

それでも圧縮に失敗する場合は、SophiaCompress(Java) OASIS の圧縮オプション「スタックマップの最適化」をオフにしてお試しください。

「スタックマックの最適化」オプションに関連する不具合は、SophiaCompress(Java) OASIS 5.0.2 で解決されました。

Version :

4.6.*、4.5.*、4.4.*、4.3.*

答え :

症状:プリベリファイエラーが発生する、或いは、圧縮後のアプリが正常に動作しない。

原因:SophiaCompress(Java) OASIS 内蔵プリベリファイヤに不具合があることが確認されています。

対処法:プリベリファイヤは携帯 Java SDK 標準のプリベリファイヤをお使いください。

Version :

4.5.*、4.4.*、4.3.*

答え :

症状:SophiaCompress(Java) OASIS が異常終了する。

原因:SophiaCompress(Java) OASIS の圧縮オプションの「switch 文を if に変換」に不具合があることが確認されています。

対処法:SophiaCompress(Java) OASIS の圧縮オプションの「switch 文を if に変換」をオフにしてお使いください。

Version :

4.5.*

答え :

症状:SophiaCompress(Java) OASIS が終了しない。

原因:SophiaCompress(Java) OASIS の圧縮オプションの「未使用スタック命令削除」または「System.out.print[ln]()の削除」に不具合があることが確認されています。

対処法:SophiaCompress(Java) OASIS の圧縮オプションで、「JDK1.4のサポート」、「未使用スタック命令削除」、「System.out.print[ln]()の削除」の 3 つのオプションをオンにして圧縮をして同様の現象が発生する場合は、「未使用スタック命令削除」または「System.out.print[ln]()の削除」のいずれかの圧縮のオプションをオフにして圧縮します。

Version :

4.5.1、4.4.*、4.3.*

答え :

症状:プリベリファイエラーが発生する、或いは SophiaCompress(Java) OASIS が終了しない。

対処法:SophiaCompress(Java) OASIS の圧縮オプション「スタックマップの最適化」と「スタックマックの最適化(新規クラス作成)」に不具合があることが確認されています。

対処法:SophiaCompress(Java) OASIS の圧縮オプション 「スタックマップの最適化」と「スタックマックの最適化(新規クラス作成)」を「オフ」にしてお使いください。 また、プリベリファイヤは携帯 Java SDK 標準のプリベリファイヤをお使いください。

Version :

4.2.*、4.1.*

答え :

SophiaCompress(Java) OASIS 4.2.1 と 4.2.0 の圧縮オプション「BasicBlock共有」と「内蔵プリベリファイヤ」に不具合があることが確認されています。

SophiaCompress(Java) OASIS 4.1.0 または 4.1.1 の 圧縮オプション「インターフェースの削除」「未使用メソッドの削除」に不具合があることが確認されています。

対処法:これらの SophiaCompress(Java) OASIS の圧縮オプションを「OFF」にしてお使いください。 また、プリベリファイヤは携帯 Java SDK 標準のプリベリファイヤをお使いください。

以上の手段で解決しないとき
解決方法 :

問題の原因となっている SophiaCompress(Java) OASIS の圧縮オプションを突き止めて、その圧縮オプションをオフにします。

具体的な方法 : SophiaCompress(Java) OASIS の圧縮オプションについて、 ひとつだけオプションをオンにし、それ以外はすべてオフにして圧縮してみます。

圧縮できないオプションが見つかった場合、圧縮オプションのデフォルト設定からそのオプションだけをオフにして圧縮します。

圧縮後のアプリが正常に動作しないのですが・・・?

Version :

4.5.*、4.4.*

答え :

症状:SophiaCompress(Java) OASIS で圧縮したアプリが正常に動作しない。

原因:SophiaCompress(Java) OASIS の圧縮オプション「抽象クラス融合」に不具合があることが確認されています。

対処法:SophiaCompress(Java) OASIS の圧縮オプション「抽象クラス融合」をオフにして圧縮します。

Version :

4.5.*、4.4.*、4.3.*

答え :

症状:プリベリファイエラーが発生する、或いは、圧縮後のアプリが正常に動作しない。

原因:SophiaCompress(Java) OASIS 内蔵プリベリファイヤに不具合があることが確認されています。

対処法:プリベリファイヤは携帯 Java SDK 標準のプリベリファイヤをお使いください。

Version :

4.5.*

答え :

症状:SophiaCompress(Java) OASIS で圧縮したアプリが正常に動作しない。

原因:SophiaCompress(Java) OASIS の圧縮オプション「クラス変数配列化」に不具合があることが確認されています。

対処法:SophiaCompress(Java) OASIS の圧縮オプション「クラス変数配列化」をオフにして圧縮します。

Version :

4.5.0、4.4.0

答え :

症状:ADF ( JAM / JAD ファイル ) 内の 実行クラス名が正しく書き換えられていない。

対処法:圧縮オプションで「抽象クラス融合」オプションをオフにしてご利用ください。

以上の手段で解決しないとき
解決方法 :

問題の原因となっている SophiaCompress(Java) OASIS の圧縮オプションを突き止めて、その圧縮オプションをオフにします。

具体的な方法 : SophiaCompress(Java) OASIS の圧縮オプションに関して、 ひとつだけオプションをオン(その他のオプションはすべてオフ)にして圧縮してみます。

圧縮できないオプションが見つかった場合、圧縮オプションのデフォルト設定からそのオプションだけをオフにして圧縮します。

インストールしたけれども、どのアプリでも圧縮に失敗するのですが・・・?

Version :

4.2.*、4.1.*

答え :

症状:どのアプリを圧縮しても「ファイルが破壊されている可能性があります。圧縮セットアップ中にエラーが発生しました。ファイルパスが正しいか確認してください。」というメッセージが表示される。

対処法:一旦、SophiaCompress(Java) OASIS をアンインストールし、再インストールします。それから、PCを再起動して SophiaCompress(Java) OASIS を起動します。

他の圧縮ツールと併用できますか?

Version :

全て

答え :

併用可能な圧縮ツールは「オブファスケータ」と「 ZIP 圧縮ツール」があります。

「オブファスケータ」では ProGuard が併用できます。このとき、最初に ProGuard で圧縮してから、SophiaCompress(Java) OASIS を使います。

他のオブファスケータについては、確認は取れてませんが、併用できる可能性はあります。一般に、「オブファスケータ」を使った後に、SophiaCompress(Java) OASIS で圧縮すると圧縮率は高まります。万一、圧縮後のアプリが正常に動作しない場合は、最初に SophiaCompress(Java) OASIS で圧縮してから、「オブファスケータ」をご利用ください。

「 ZIP 圧縮ツール」としては、KZIP と 7-ZIP が併用でき、SophiaCompress(Java) OASIS の操作画面から設定が可能です。7-ZIP よりも KZIP の方が ZIP 圧縮後のサイズは若干小さくなります。

起動すると、ファイルが開けないエラーが発生したり、"Unable to access jarfile C:\Program" が表示されるのですが ・・・ ?

Version :
全て
答え :

下記の方法で、拡張子が「JAR」であるファイルを、適切な Java のバージョン ( JDK 1.4.2 または 1.5.0 ) に関連付けます。( JDK 1.4.2 または 1.5.0 のインストールが前提条件になります )

Java のバージョン切り替え方法

圧縮率を更に向上させるには ・・・ ?

Version :
全て
答え :
  1. アーカイバとして、7-ZIP または kzip をお試しください。
  2. クラス融合をオプションを 10 から 1 〜 9 に変更することで、逆に圧縮率が向上する場合があります。(この不具合は 4.6.0 修正されました。)
  3. Proguard などの他圧縮ツールと併用することで、更に圧縮できる場合があります。

同じアプリなのに、圧縮後のサイズが変動するのですが ・・・ ?

Version :
4.3.*、4.2.*、4.1.*、4.0.*
答え :

クラス融合や名前共有で組み合わせるグループの項目が圧縮の実行毎に変化する仕様になっているからです。

保存フォルダの名前に「ム」があると圧縮に失敗するのですが ・・・ ?

Version :
全て
答え :

iαppli Development Kit Ver.1.02 付属のプリベリファイヤでは、絶対パスに文字「ム」が含まれると、正常に動作しません。

(例)
  ×  c:\ゲーム\tetris.jar
  ○  c:\game\tetris.jar

「Java.lang.OutOfMemoryError: Java heap space 起動オプション -Xmx<size> を指定して、ヒープサイズを増やして起動してください。」が表示されるのですが ・・・ ?

Version :
全て
答え :

以下の手順に従って、「起動オプション」を編集してヒープサイズを増やします。

  1. エクスプローラより、 [ツール] - [フォルダ オプション] を選択します。

    手順1
  2. [ファイルの種類] タブを開き、 拡張子 JAR を選択して、[詳細設定] ボタンを押します。

    手順2
  3. アクションから [open] を選択し、 [編集] ボタンを押します。

    手順3
  4. [アクションを実行するアプリケーション] の、" -jar " という文字の後ろに、" -Xmx<size> " と追加します。

    <size>には、ヒープサイズを指定してください。(例 :100MB の場合 100m)

    手順4
  5. [OK] ボタンを押し、SophiaCompress(Java) OASISを再起動してご利用ください。

-Xmx<100m>と起動オプションを指定すると起動できなくなりました ・・・ ?

Version :
全て
答え :

java -jar -Xmx<10000> scompress.jar
のように "<"と">" で括ってサイズを指定すると、「指定されたファイルが見つかりません。」 というエラーメッセージが表示されます。

以下のサイズ指定例を参考に、"<"と">"を含めずにサイズ指定を行ってください。

(例)
10000バイト : java -jar -Xmx10000 scompress.jar
100メガバイト : java -jar -Xmx100m scompress.jar

バージョンアップしたら、起動しなくなりました ・・・ ?

Version :
3.2 〜
答え :

SophiaCompress(Java) OASIS の起動には Java 2 SDK 1.4.2 または 1.5.0 が必要となります。

Java 2 SDK 1.3 をお使いのお客様は、以下のページを参考にご使用中の Java のバージョンを切り替えてお使いください。

Java のバージョン切り替え方法

クラス融合機能を使って圧縮したアプリが、OutOfMemoryErrorで異常終了するのですが ・・・ ?

Version :
3.0.0 ~
答え :

融合されたクラスは、インスタンス生成に多くのメモリを消費します。 そのため、OutOfMemoryError で異常終了することがあります。

この問題は、圧縮オプションの「クラス融合レベル」を下げる、あるいはクラス融合を「オフ」にすることで回避できます。

クラス融合が活きるプログラミングスタイルは・・・?

Version :

3.0 〜

答え :

できるだけ継承を避けてアプリを作成してください。そうすると、クラス融合機能は有効に働きます。