2009-07-02 3 views
0

メインクラスを適切に設定してIntelliJを使用してjarファイルを作成しました。NoClassDef jarを実行したときに発見

コマンドライン(Windows)から「java -jar foo.jar」を実行すると、メインファイルが見つからないという例外が表示されます。メインクラスのようなものになります。

Manifest-Version: 1.0 
Created-By: IntelliJ IDEA 
Main-Class: mypackage.LockUtil 

をジャーが持つ適切なディレクトリ構造が含まれています:マニフェストファイルが含まれてい

Exception in thread "main" java.lang.NoClassDefFoundError: mypackage/LockUtil 
Caused by: java.lang.ClassNotFoundException: mypackage.LockUtil 
     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 java.lang.ClassLoader.loadClassInternal(Unknown Source) 
Could not find the main class: mypackage.LockUtil. Program will exit. 

package mypackage; 

public class LockUtil { 
    public static void main(String[] args) { 
    ... 

を私は次の例外を取得しています.classファイル

答えて

1

mypackage.LockUtilを実行しようとしていますが、mypackage.locking.LockUtilを使用する必要があります(クラスの冒頭にはpackageというステートメントがあります)。

もう1つの可能性は、クラスを移動して、更新を忘れたことです(package)。

+0

申し訳ありませんが、投稿の間違いでした - 実際のパッケージ名は正しいですが...(私は質問を更新しました) – ripper234

0

それはあなたのパッケージの名前がmypackage.lockingだけでなく、mypackageと

0

ているようだあなたのマニフェストにメインクラスの定義は、mypackageと/ LockUtilを指していうよりmypackageと/ロック/ LockUtilされることが表示されます。

-Rick

2

あなたがjava -tf foo.jarを行う場合、あなたはこのような何かを見ていますか?

META-INF/ 
META-INF/MANIFEST.MF 
mypackage/ 
mypackage/LockUtil.class 

どこか別のディレクトリレベルがあるのでしょうか?

あなたはJavaがメインのファイルは、このようなものでjarファイルを構築することがあることを知っていることを確認することができます:

jar cfe foo.jar mypackage.LockUtil mypackage/LockUtil.class 
1

んLockUtilは、それによってLockUtilを許可しない、解決できない別のクラスに依存していますロードするには?

関連する問題