-1

メインクラスが他のクラスに依存しているJavaアプリケーションがあります。IDE を使用してアプリケーションをうまく実行できます。しかし、を使用してメイン クラスのクラス ファイルに移動して、コマンド ラインからアプリケーションを実行したい場合java mainClass、次のエラーが表示されます [メイン クラス名はmainClass]:

Exception in thread "main" java.lang.NoClassDefFoundError: mainClass(wrong name: mainfolder/mainClass)

    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

IDE を使用せずにアプリケーションを実行する方法を教えてもらえますか?

4

5 に答える 5

1

完全修飾名を指定する必要があります。たとえば、MainClassパッケージ com.example の下にある場合は、実行する必要がありますjava com.example.MainClass

詳細はこちらで確認できます。

ドキュメントから:

デフォルトでは、最初の非オプション引数は呼び出されるクラスの名前です。完全修飾クラス名を使用する必要があります。-jar オプションが指定されている場合、最初の非オプション引数は、アプリケーションのクラス ファイルとリソース ファイルを含む JAR アーカイブの名前であり、起動クラスは Main-Class マニフェスト ヘッダーによって示されます。Java ランタイムは、ブートストラップ クラス パス、インストールされた拡張機能、およびユーザー クラス パスの 3 つの場所で、スタートアップ クラスおよび使用されるその他のクラスを検索します。

于 2012-06-26T06:52:16.510 に答える
0

mainfolder.mainclassの代わりに試してくださいmainfolder/Mainclass。また、メインフォルダーはパッケージです。

を使用して、必要なすべての jar をクラスパスに配置してください-cp

于 2012-06-26T06:51:08.843 に答える
0

IDE の有無にかかわらず、Java アプリケーションはいつでも起動できます。

java -cp classpath EntryClass

アプリケーションを IDE で実行すると、使用している IDE によってクラスパスが準備されます。IDE なしで実行する場合は、クラスパス全体を自分で準備する必要があります。

EntryClass は、クラスパスからも見つかります。

詳細については、java - Java アプリケーション ランチャーを参照してください。

于 2012-06-26T06:59:40.563 に答える
0

/home/flyleaf/app/ から Java プログラムを実行しているとします。

これは、必要なコマンドです。

javac -classpath /home/flyleaf/app/jar1.jar:/home/flyleaf/app/jar1.jar:/home/flyleaf/app/ com/app/your/mail/class/Main.java

必要なjarファイルとプログラムを取得したパスをクラスパスに追加する必要があります

于 2012-06-26T07:01:39.963 に答える
0

Ok!クラスファイルを含むフォルダーの外からmain class's class filewith でjava コマンドを実行した後の出力を取得しました!package.classname

さらに、jarファイルを見つけてこのコマンドを実行すると、jarファイルも機能しますjava -jar jarname.jar

みんなありがとう!

于 2012-06-26T07:02:11.873 に答える