【问题标题】:javac classpath option with multiple jar files in current directory causing error当前目录中有多个 jar 文件的 javac 类路径选项导致错误
【发布时间】:2014-07-29 21:08:28
【问题描述】:

环境:Windows 7、Java 6。

尝试使用 -cp 选项编译 .java 文件。该文件使用当前目录中的单个 jar 文件以及当前目录中的其他一些 jar 文件。

javac -cp ./*.jar MyFile.java

没用。

javac -cp ./* MyFile.java 

没用

javac -cp ./MyJar.jar MyFile.java

作品

前两种情况,我得到一个无效标志错误。有人可以解释这种行为吗?

我检查了是否是空格问题,我的完整文件路径中的任何地方都没有空格。

【问题讨论】:

标签: java javac


【解决方案1】:

在 cmets 以及“这个问题在这里可能已经有了答案:”中提供的两个链接的引用来源,并没有完全解释观察到的行为。

javac -cp ./*.jar MyFile.java

不起作用,因为通配符 * 在此上下文中的用法与正常用法不同。这可以从文档中理解。 * 始终代表完整文件而不是部分文件名。

javac -cp ./* MyFile.java

应该有效。显然在 Windows 中使用双引号和/或分号。作品:

javac -cp "./*" MyFile.java

javac -cp ./*;我的文件.java

javac -cp "./*;"我的文件.java

javac -cp *;我的文件.java

javac -cp "*" MyFile.java

javac -cp "*;"我的文件.java

文档中没有任何地方提到过这个重要的事实。

所以我猜在 WINDOWS 7 64 位和 java 1.6.0_75 上使用双引号或在使用通配符时总是使用分号 *

【讨论】:

  • 我不必使用引号我只使用了 C:\share\NetBeansProjects\JLibUser>%JAVA_HOME%\bin\javac src\jlibuser\*.java -cp ..\JLib\dist\*
  • @KalpeshSoni 可能与使用当前目录有关?
  • @KalpeshSoni 无法重现您的行为。我将所有 jar 从当前目录移到其中的子目录中,并且仍然保持上述行为。我需要做 -cp libs/*;或 -cp "libs/*"
  • 我的是 1.6.0_75-b13 on windows 7 64 bit
  • 我使用cygwin 2.8,win 7,只有双引号and分号在多个jars的情况下有效。
【解决方案2】:

在 Windows 中使用反斜杠?

试试

javac -cp .\* MyFile.java

另请注意Broken wildcard expansion for Java7 commandline on Windows(7?)

【讨论】:

  • 运气不好。我更新了我的答案。没有双引号,但最后的分号有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-20
  • 1970-01-01
  • 2010-12-16
  • 1970-01-01
  • 2021-04-22
  • 2013-05-28
  • 1970-01-01
相关资源
最近更新 更多