【问题标题】:How to run java program from cmd line with classpath and native libraries?如何使用类路径和本机库从 cmd 行运行 java 程序?
【发布时间】:2011-09-18 08:41:33
【问题描述】:

好吧,我放弃了——我没有很多 xp 从 cmd 行运行 java,我已经有一段时间了,尝试了无数的组合,我很沮丧,所以我们开始吧。

我需要从 cmd 行运行一个简单的 java 应用程序(依赖于一堆 jar,然后依赖于一些本机库) - 当我尝试运行以下命令时,我在 bin 文件夹中:

java -Djava.library.path="../lib" -cp ../jar;. MyMainClass

无论订单如何(我了解订单的数量!)这都行不通,会出现不同的错误。

例如,我上面粘贴的版本给了我一个命令行参数列表,后跟:

-bash: myMainClass: No such file or directory

但 MyMainClass.class 存在于我从中运行这些东西的 bin 文件夹中。

如果我尝试这样做:

java -Djava.library.path="../lib" AlphaHHKernel_Tuning_Test -cp ../jar;.

我明白了:

Exception in thread "main" java.lang.NoClassDefFoundError: MyMainClass
Caused by: java.lang.ClassNotFoundException: MyMainClass
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
-bash: .: filename argument required
.: usage: . filename [arguments]

我想了解应该如何使用这些属性(并让它在过程中发挥作用)。

【问题讨论】:

标签: java macos command-line


【解决方案1】:

在 Unix 中使用 : 分隔符指定类路径,而不是在 Windows 中使用 ;-cp ../jar:.

另外,您需要指定每个 jarfile,而不仅仅是给它一个装满jar 的目录。

【讨论】:

  • mmm ...现在,如果使用:-cp ../jar/:,至少我会在两个版本中得到相同的错误。但不确定这意味着什么
  • 查看最新编辑,我花了一段时间才注册更明显的遗漏!
  • 谢谢你,你摇滚 - 有效(但仅在主课之前使用 -cp )。你不能指向文件夹有点奇怪......但这就是我没有阅读“说明”我猜的结果
  • 一般在 Unix 中选项在参数之前,在这种情况下主类是参数。
  • 您可以使用一些技巧,例如:-cp $(echo ../*.jar | tr ' ' ':'):。因为 shell 用空格扩展通配符匹配,而 Java 希望它的类路径用冒号
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-19
相关资源
最近更新 更多