将jar文件从我的计算机上传到服务器并尝试运行它。当我运行它时,我得到了java.lang.NoClassDefFoundError,它似乎与我的main方法依赖的twitter4j jar有关。
但是,我的库中有这个jar文件,所以当我将代码构建到jar中时,不应该包含它吗?这是一张有用的图片。
是我得到的错误。 (暂时无法上传图片。
答案 0 :(得分:0)
不确定这与twitter有什么关系,但无论如何,问题是你没有正确的类文件。换句话说,当您在命令提示符下运行胖JAR时,您没有随其导出任何库(或者如果您这样做,则没有那个特定的库)。
有时这样的错误可能是因为java版本不正确,但是由于java中没有“twitter”包或类,因此不是这种情况。
使用像JarSplice这样的东西可以解决这个问题。
答案 1 :(得分:0)
假设您没有将twitter4j类打包到应用程序jar中,您需要告诉Java它可以在哪里查找不在应用程序jar中的类。您通常使用classpath标志。在你的情况下,它应该看起来像
java -cp /tmp/twitter4j.jar -jar /tmp/myapp.jar
另一种方法是将所有twitter4j的类打包到应用程序jar中。这被称为“胖子”。罐。如何制作一个取决于你如何构建你的应用程序jar。
答案 2 :(得分:0)
您尝试使用的JAR文件需要位于类路径中。这可以通过使用命令行中的-cp
属性来完成。但是,使用java -jar
时,您无法使用-cp
属性。
要解决此问题,您可以执行以下操作:
java -cp /tmp/myapp.jar;\path\to\external.jar com.example.package.MyClass
其中MyClass定义了main()
方法。
或者,您可以使用manifest.mf文件在类路径上指定jar文件。有关详细信息,请参阅http://docs.oracle.com/javase/tutorial/deployment/jar/manifestindex.html。