JDK 1.7错误:使用带有多个jar的命令“java -cp”时无法找到或加载主类

时间:2015-05-20 14:30:29

标签: java maven classpath java-7

我创建了一个名为a-test的maven项目,其中只有一个主类

package com.jar.test.a;
public class AppTest 
{
  public static void main( String[] args )
  {
    System.out.println( "hi test");
  }
}

打包

 mvn clean install
 cd target

它可以正常运行

 java -cp a-test-0.0.1-SNAPSHOT.jar com.jar.test.a.AppTest

 java -cp *.jar com.jar.test.a.AppTest

并打印

 hi test

但是当我想指定一个多jars路径(我想导入另一个java项目)时会发出错误

java -cp *.jar:/usr/lib/*.jar com.jar.test.a.AppTest
  

错误:无法找到或加载主类

当我在macbook os x 10.10.3和centos6上测试它时会出现同样的错误

java version "1.7.0_71"

我试过this,但它对我不起作用。

2 个答案:

答案 0 :(得分:2)

您应该发出:

java -cp *:/usr/lib/* com.jar.test.a.AppTest

...因为*暗示*.jar。见Understanding class path wildcards

  

类路径条目可以包含基本名称通配符*,这相当于指定扩展名为.jar或.JAR的目录中所有文件的列表。例如,类路径条目foo / *指定名为foo的目录中的所有JAR文件。简单地由*组成的类路径条目扩展为当前目录中所有jar文件的列表。无论文件是否被隐藏(即名称以'。'开头),都将考虑文件。

请小心使用单个*,因为您的shell可能希望将其扩展为通配符,在这种情况下您可以引用它。

答案 1 :(得分:0)

你应该像这样(Unix系统):

java -cp a-test-0.0.1-SNAPSHOT.jar:lib/*:. com.jar.test.a.AppTest