我有一个Java包,其中包含一个我正在尝试在Windows CMD中编译的类。
这是文件夹结构:
.\src\
包含这些包。我正在尝试在AggregationEngine包中编译类。该类名为testClass.java
,它使用twitter4j
库。 twitter4j
库的jar文件包含在.\src\lib\
目录中twitter4j-core-2.2.4.jar
我尝试了以下内容:
javac -classpath "..\lib\twitter4j-core-2.2.4.jar" -sourcepath C:\x\x\x\src\AggregationEngine\ AggregationEngine\TwitterCrawler.java
java AggregationEngine.testClass "test String"
pause
但它似乎不起作用。我对上面有基本的了解。我甚至不确定上述是否是正确的方法。
注意:我不想进入环境变量定义方法,因为我会在不同的操作系统上做同样的事情。哦,我也可能还包含多个.jar
文件。
- 编辑 -
输出:运行应用程序时。 java AggregationEngine.TwitterCrawler
Exception in thread "main" java.lang.NoClassDefFoundError: twitter4j/TwitterException
Caused by: java.lang.ClassNotFoundException: twitter4j.TwitterException
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
有什么建议吗?
答案 0 :(得分:2)
答案 1 :(得分:2)
您的问题很简单,当您尝试执行程序时,缺少twitter4j JAR。编译器仅使用类路径条目来验证代码的正确性,它不会将它们包含在其输出中。
这应该有效:
java -classpath .;..\lib\twitter4j-core-2.2.4.jar AggregationEngine.testClass "test String"
答案 2 :(得分:0)
...或Maven,包括Maven项目中的Twitter4j,在http://twitter4j.org/en/index.html#maven中解释
答案 3 :(得分:0)
我知道它太旧了但是对于像我这样的人来说,自从twitter4j核心使用它们以来,在项目中包含log4j,slf4j和commons-logging jar解决了TwitterException的ClassNotFound问题。