2011-10-05 97 views
0

我有哪裏我嘗試運行示例應用程序的Hibernate錯誤在運行Java程序:java.lang.NoClassDefFoundError

源文件以下封裝結構:/home/chander/workspace/HibernateApp/src/com/hib/TranslateSQL.java

我的當前目錄:

/home/chander/workspace/HibernateApp/src 

編譯: $JAVA_HOME/bin/javac com/hib/*.java ---這成功

跑運行: $JAVA_HOME/bin/java com/hib/TranslateSQL給予以下異常:

Exception in thread "main" java.lang.NoClassDefFoundError: TranslateSQL (wrong name: com/hib/TranslateSQL) 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:616) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:315) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) 
Could not find the main class: TranslateSQL. Program will exit. 

我有我的CLASSPATH和JAVA_HOME集。我似乎沒有發現我的命令有什麼問題。

也試過以下命令:

$JAVA_HOME/bin/java com.hib.TranslateSQL 

得到了以下異常:

Exception in thread "main" java.lang.NoClassDefFoundError: com/hib/TranslateSQL 
Caused by: java.lang.ClassNotFoundException: com.hib.TranslateSQL 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:315) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) 
Could not find the main class: com.hib.TranslateSQL. Program will exit. 

回答

0

我把它做這個工作:

cd /home/chander/workspace/HibernateApp/src/com/hib/ 

export CLASSPATH=$CLASSPATH:/home/chander/workspace/HibernateApp/src/ 

$JAVA_HOME/bin/java com.hib.TranslateSQL 
+0

*不應該*是必需的 - '-cp。'在我的答案中的版本應該已經足夠了,除非CLASSPATH *也包含了你需要的其他東西,在這種情況下,錯誤信息會有所不同。你也不需要進入src/com/hib目錄。 –

2

你指定的類名不正確。取而代之的是:

$JAVA_HOME/bin/java com/hib/TranslateSQL 

你應該運行:

$JAVA_HOME/bin/java com.hib.TranslateSQL 

你應該指定一個類名這是一個包(com.hib)內,而不是在一個文件名目錄結構(com/hib

編輯:如果這不起作用,您的類路徑可能會設置不正確。你可以在命令行上指定它:

$JAVA_HOME/bin/java -cp . com.hib.TranslateSQL 
+0

已經試過了。獲取以下異常:線程「main」中的異常java.lang.NoClassDefFoundError:com/hib/TranslateSQL 導致:java.lang.ClassNotFoundException:com.hib.TranslateSQL \t at java.net.URLClassLoader $ 1.run(URLClassLoader .java:202) \t at java.security.AccessController.doPrivileged(Native Method) –

+0

@ChanderShivdasani:總是值得說一句,你試圖避免我們重複這個...將被編輯。 –

+0

@ChanderShivdasani:查看編輯答案的頂部 - 請說明你是否真的在src'目錄中;目前你的'javac'不會找到你提到的源文件。 –