您好我有一個maven項目使用三個庫:junit,commons-lang,org.apache.commons 我的程序位於位置pl.parser.example.MainClass(與主要方法)和其他三人:Currency.java,CurrencyPojo.java,CurrencyRates.java從JAR使用參數從命令行運行maven項目
我的主要方法:
public static void main(String[] args){
try {
String type = "c";
String currencyCode = args[0];
String inputStartDate = args[1];
String inputEndDate = args[2];
...
我不能從命令行運行這個程序,我用Maven構建它jar文件並嘗試:
java -cp AreYouExample.jar pl.parser.example.MainClass EUR 2013-01-28 2013-01-31
但我得到異常:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/ma
th3/stat/descriptive/DescriptiveStatistics
at pl.parser.example.CurrencyRates.obtainAvgPurchaseRate(
CurrencyRates.java:33)
at pl.parser.example.MainClass.main(MainClass.java:34)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.math3.stat.descr
iptive.DescriptiveStatistics
at java.net.URLClassLoader$1.run(Unknown Source)...
我覺得運動員不能看到的圖書館,我在程序中使用(以得到每場數學計數)
我don'thave清單文件,並類路徑文件。當我試圖運行罐子:
...> java MainClass EUR 2013-01-28 2013-01-31
然後我得到異常:
Error: Could not find or load main class MainClass.java
但是,當我將去MainClass.java到文件夾和運行javac MainClass.java ......然後compiller無法找到因爲sumbols位於其他類(在這個文件夾/包)
我認爲我應該插入一個主類,我建議這種情況下堆棧溢出,build in pom file,但不起作用。
編輯: 現在的作品,我做了像other overstackflow topic 我insertet這個代碼在POM文件中的變化:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>your.main.Class</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
但是如何在java項目中添加classPath? – MikeB
您已將您的jar添加到類路徑'java -cp AreYouExample.jar'。你可以在windows上使用';'分隔多個jar,在* nix上使用':',比如'java -cp jar1; jar2; jarN com.sample.MyClass'。你可以在這裏閱讀更多關於它的信息:http://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html – Morfic