1

Windows と Mac OS X でアプリケーションをクリーンにビルドできますが、Windows でアプリケーションを実行しようとすると、メイン クラスに関するクラスが見つからないという例外が発生します。

main$4 が見つかりません。

クラスがあり、きれいにビルドされます。クラスファイルが見つからないのはなぜですか? Jar は OS X で動作します。

以下のようにJarが作成されます。

  <target name="jar" depends="">
  <jar destfile="build/application.jar" > 
    <manifest>
      <attribute name="Built-By" value="Hamza"/>
      <attribute name="Main-Class" value="application"/>
    </manifest>
    <fileset dir="build">
      <include name="**/*.class"/>
  <include name="**/*.png"/> 
      <exclude name="**/*.jar"/>
    </fileset>
  </jar>
</target>

OS Xではエラーなしで実行できますが、Windowsではクラスが見つからないという例外が発生します。

4

3 に答える 3

1

Main-Class 属性は本当に「アプリケーション」に設定されていますか?

Main-Class は、実行するクラスへの相対パスを示す必要があります (例: "myPackage.Application" または単に "Main")。

于 2009-06-04T16:30:09.880 に答える
1

同じ JVM で実行されていますか? main$4 は、見つからない匿名クラスであることを示しているようです。詳細情報がなければ、あなたを助けるのは難しい. コードの一部といくつかのスタックトレース、および使用している JRE バージョンを提供してください。

そこにタイプミス : Windowsと Mac OS X ではきれいに、しかしWindowsでは

于 2009-06-04T13:38:43.580 に答える
0

多くの情報はありませんが、メイン クラスの匿名クラスは依存関係を解決できないため、作成できないようです。

また、ビルド時と実行時のクラス パスには違いがあります。実際のランタイムでは、ビルドよりも多くの jar が必要になる可能性があります。

たとえば、コードで参照するインターフェイスを含む jar は、コードをビルドするために必要ですが、コードを実行するには、そのインターフェイスの実装を含む jar が必要になります。

編集:あなたのアップデートはあなたのビルドを示しています.これはJavaであるため、すでに動作すると言われています(どのOSでもかまいません)。あなたの問題は、実行時のクラスパスです。1 つの OS で設定されたクラスパス環境変数があり、他の OS では設定されていませんか? これでは、依存関係が何であるかを判断できません。関連する匿名クラスの内容を知ることは、どの依存関係が欠落しているかを把握するのに役立ちます。

于 2009-06-04T14:25:49.867 に答える