Java 类路径中的多个JAR不工作

Java 类路径中的多个JAR不工作,java,command-line,jar,jdk1.6,Java,Command Line,Jar,Jdk1.6,我在stackoverflow上看到了几个非常类似的问题,但没有遇到任何与我的问题完全匹配的问题。我有一个包含几个.java文件的文件夹,还有一个包含两个.jar文件的文件夹。在使用javac时,我需要包含两个jar文件,以便一次性编译整个项目: $: javac -classpath .:~/myjardir/*.jar ~/myprojectdir/*.java 但是如果我这样做,只有第一个jar被识别,依赖于第二个jar的所有东西都会抛出一个错误。令人惊讶的是,如果我分别编译每个程序 $

我在stackoverflow上看到了几个非常类似的问题,但没有遇到任何与我的问题完全匹配的问题。我有一个包含几个.java文件的文件夹,还有一个包含两个.jar文件的文件夹。在使用javac时,我需要包含两个jar文件,以便一次性编译整个项目:

$: javac -classpath .:~/myjardir/*.jar ~/myprojectdir/*.java
但是如果我这样做,只有第一个jar被识别,依赖于第二个jar的所有东西都会抛出一个错误。令人惊讶的是,如果我分别编译每个程序

$: javac -classpath .:~/myjardir/oneofthejars.jar ~/myprojectdir/file1.java

然后一切正常。我还分别在Eclipse中编译了该项目,只是为了测试代码和JAR。只有当我尝试在命令行中使用带有
-classpath
的两个JAR时,我才会得到错误。通配符项应该在JDK6中工作,因此我在这里感到困惑。

类路径通配符的工作方式与Unix shell中的不同。
*
表示目录中名为
*.jar
的所有内容。因此,您不需要执行
*.jar
,只需执行
*
。以下操作应满足您的要求:

$: javac -classpath .:~/myjardir/* ~/myprojectdir/*.java
请参见。

请参见,但以下是Java文档中的相关段落:

类路径项可以包含basename通配符*,这被认为等同于指定目录中所有文件的扩展名为.jar或.jar的列表。例如,类路径条目foo/**指定名为foo的目录中的所有JAR文件。仅由*组成的类路径项扩展为当前目录中所有jar文件的列表


如果你想在一个类路径中有多个东西,就我所知,你必须用类路径分隔符来分隔它们。因此./lib:/lib/mylib在unix系统上是一个有效的类路径,我认为等效的类路径应该是。\lib\lib\mylib在windows系统上。您不必指定每个文件,只需指定目录。

我建议您使用像
ant
maven
这样的构建工具来跟踪依赖项并执行构建。AFAIK使用通配符适用于JVM的类路径,但是它可能不适用于windows中的
javac
Esp,您需要添加双引号:javac-cp.。\lib*“test\wc\MyCode.java