2011-10-05 64 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'不会找到你提到的源文件。 –