【问题标题】:set java classpath to multiple folders that have jar files and run from command line将 java 类路径设置为具有 jar 文件并从命令行运行的多个文件夹
【发布时间】:2019-10-22 15:29:49
【问题描述】:

我正在尝试使用 Windows 命令行运行一个简单的 java 类。我已设置 JAVA_HOME 并将其添加到系统路径变量中。

我在不同的文件夹中有多个 jar,我正在尝试使用以下命令使用类路径添加所有 jar。但是,当使用“*”时,类路径仅选择第一个路径,尽管我使用的是“;”,但它忽略了其余路径特点。如果路径使用“/”分隔符,则它不起作用。 是否可以指定具有 jar 文件并从命令行编译的多个文件夹的路径

javac -verbose -classpath "C:\Program Files\lib\java\core\*; C:\Program Files\lib\java\core\locale\*; C:\Program Files\lib\java\modules \*; C:\Program Files\lib\java\modules\ext\*;" testClass.java

最终我想在 netbeans 项目属性的 ant 脚本中使用这个类路径设置来简化设置。

【问题讨论】:

  • 如果您在 ant 脚本中使用该路径,您不能让脚本获取这些路径(例如通过属性配置它们)并让它扩展为实际的 jar 路径吗?
  • 你能仔细检查你的命令行吗?应该是-classpath folder\*。也就是不要忘记*之前的斜线
  • 删除每个;之后的所有空格。类路径中不会忽略空格。 (正如 Daniele 所说,在每个星号之前放置一个目录分隔符。)
  • 是的,如果我在路径中使用单个反斜杠 \*,stackoverflow 编辑器没有在 * 之前显示斜杠,我已更新问题以使用 \\* 并按预期显示它跨度>

标签: java command-line classpath


【解决方案1】:

这是最终按预期工作的解决方案。当在我的特定场景的类路径中使用“*”字符时,它会跳过第一个路径之后的所有内容。对每个路径分别使用双引号(“),然后使用“;”作为分隔符是解决方案。

分号“;”前后有空格也不行

javac -verbose -classpath "C:\Program Files\lib\java\core\*";"C:\Program Files\lib\java\core\locale\*";"C:\Program Files\lib \java\modules\*";"C:\Program Files\lib\java\modules\ext\*" testClass.java

【讨论】:

    【解决方案2】:

    如果你在不同的目录中有jar,你需要设置所有这个目录的类路径。

    窗户

    java -cp ./folder1/*;./folder2/*;./folder3/* com.xyz.MainClass
    

    Linux ( ; 改为 :)

    java -cp ./folder1/*:./folder2/*:./folder3/* com.xyz.MainClass
    

    【讨论】:

      猜你喜欢
      • 2013-08-27
      • 1970-01-01
      • 1970-01-01
      • 2016-08-13
      • 1970-01-01
      • 2013-01-11
      • 1970-01-01
      相关资源
      最近更新 更多