我正在研究eclipse,我需要使用外部库。例如Jsoup和JXL。
到目前为止我所做的是:首先在我的项目文件夹中创建一个“lib”文件夹。然后在eclipse中,单击项目属性,Libraries选项卡,添加外部jar并在lib文件夹中添加jar。
所以这解决了我的编译问题。现在,当我运行程序时(我转到project / bin并在控制台中执行:java ProgramName;我得到
java.lang.NoClassDefFoundError:
现在进行测试,我将Jar文件添加到Main.java所在的文件夹中。现在,我已经能够运行该程序,执行以下操作:
javac -classpath ./path/to/jar Main.java
java -classpath ./path/to/jar:. Main
这很有效。
所以首先想到的是我必须告诉java在哪里找到相应的库。如果这是正确的?我该怎么做?
java -cp ???(dont know what to put here)
但此外。我有另一个问题。我正在计算机上编写这个程序,但是我会在其他可能没有这些库的地方使用它。我该如何解决这个问题?
答案 0 :(得分:0)
我喜欢使用以下内容:
java -cp myjar.jar;lib/*.jar com.foo.bar.MyClass
这不仅可以将我的jar添加到类路径中,还可以添加lib
目录中的jar。
如果你想在另一台电脑上运行你的jar,你 也需要那些罐子,你不能拿到你的罐子。为什么不直接打包你的lib目录呢?
答案 1 :(得分:0)
要让程序运行,您需要担心两个路径
您需要的命令行的一般形式是:
java -cp lib/jsoup.jar:classes Main
如果你有更多的libs
java -cp lib/jsoup.jar:lib/jxl.jar:classes Main
关于将您的应用打包到其他计算机的一般说明。您可能需要考虑制作一个自己的应用程序罐,可能最好使用http://ant.apache.org/manual/Tasks/jar.html
另一种选择是生成一个“一个jar”,它创建一个大型jar,捆绑所需的所有类,从libs和应用程序中的所有类。然后,您可以使jar可执行以获得开箱即用的解决方案。请查看http://one-jar.sourceforge.net/和https://code.google.com/p/jarjar/
答案 2 :(得分:0)
如果你有这个结构:
project folder
... code
... libs
然后从代码文件夹:
javac -cp .;../libs/*.jar yourmainclass.java
java -cp .;../libs/*.jar yourmainclass
当您需要编译并运行此项目时,请获取所有文件夹并在其他计算机中执行相同的操作。