noClassdeffounderror从外部jar运行代码时从不同的位置

问题描述:

我正在学习Java,并试图在另一台机器上测试我的代码,但运行到上述错误。我已经看过YouTube视频,阅读论坛(和SO),但仍然无法让这个工作。noClassdeffounderror从外部jar运行代码时从不同的位置

我基本上在使用eclipse引用外部jar文件的我的mac上写了一些代码。我在我的lib文件夹中有该jar,并通过右键单击“Build Path - > Add to Build Path”将其添加到Eclipse中的构建路径中。代码在我的笔记本电脑上正常工作。

但是当我尝试从linux命令行运行它时,出现上述错误。我从日食取代码,并将其复制到文件(first_try.java),然后运行这个命令:

CLASSPATH=./jedis-2.0.0.jar;export CLASSPATH 
javac first_try.java 
java -classpath . first_try 

但后来我得到的错误:Exception in thread "main" java.lang.NoClassDefFoundError: redis/clients/jedis/Jedis我通过wget的下载程序,并检查权限,并试图不同的变化。有一个类似的问题,我发现(出许多相关的那些),其具有相似背景的我的,但它的工作对用户只需输入java文件名(这不是为我工作)

我学习了一下的java代码,但从未成功运行外部jar。我想知道我做错了什么,我可以做些什么来永久修复它(理想情况下,我想在本地编写代码,然后复制它并在另一台机器上测试它)?

或者是否有更好的方法来部署依赖于第三方罐子到其他系统的代码?

+1

试试这个'javac -cp ./jedis-2.0.0.jar first_try.java '而不是'java -cp。:./jedis-2.0.0.jar first_try'。 – RanRag 2012-02-27 23:58:10

+0

@RanRag与上述完全相同的错误。 – 2012-02-28 00:01:05

+0

当我运行'java -cp = /home/ec2-user/code/jedis-2.0.0.jar first_try'时,我得到'Exception in thread'main“java.lang.NoClassDefFoundError:/ home/ec2-user /代码/ jedis-2/0/0/jar' – 2012-02-28 00:10:35

您正在构建您的类路径env var,但您不使用java命令中的值。你需要$ CLASSPATH而不是点后面的-classpath 祝你好运学习java,我很享受使用它已超过10年了;)

+1

哦,刚刚注意到了javac - 你可能也必须传递类路径 - 现在不要使用javac,使用eclipse和ant等等! – davidfrancis 2012-02-28 00:03:06

+0

感谢大卫的回答。我尝试运行命令“java -classpath $ CLASSPATH first_try”并仍然出现相同的错误,但intrestingly与上述错误不同,它没有提到外部jar,而是提到了我试图运行的文件'Exception in thread“main” java.lang.NoClassDefFoundError:first_try' – 2012-02-28 00:04:35

+0

我在我的笔记本电脑上使用eclipse(它工作正常),但我试图在不同的机器上运行它(它是一个linux服务器) – 2012-02-28 00:05:24