Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获得;错误:找不到或加载主类“;从bash脚本调用JAR时_Java_Class_Jar - Fatal编程技术网

Java 获得;错误:找不到或加载主类“;从bash脚本调用JAR时

Java 获得;错误:找不到或加载主类“;从bash脚本调用JAR时,java,class,jar,Java,Class,Jar,我在machineA上构建并运行了一个JAR,如下所示: java -cp /foo/lib/dep1.jar:/foo/lib/dep2.jar:/foo/export/myjar.jar foo.bar.baz.MyMainClass ... 因此,myjar.jar是我构建的jar,另外两个是它的依赖项。没有任何问题 然后我想在machineB上执行同样的操作,因此我复制了那里的3个JAR文件,然后尝试: /non/default/install/java -cp /bar/dep1.

我在
machineA
上构建并运行了一个JAR,如下所示:

java -cp /foo/lib/dep1.jar:/foo/lib/dep2.jar:/foo/export/myjar.jar foo.bar.baz.MyMainClass ... 
因此,
myjar.jar
是我构建的jar,另外两个是它的依赖项。没有任何问题

然后我想在
machineB
上执行同样的操作,因此我复制了那里的3个JAR文件,然后尝试:

/non/default/install/java -cp /bar/dep1.jar:/bar/dep2.jar:/bar/myjar.jar foo.bar.baz.MyMainClass ...
并得到
错误:无法找到或加载主类
。(注意:
/non/default/install/java
是在
machineB
上的一个单独的java安装,我必须使用它,而不是
/usr/bin/java
。原因是“历史”,即我对此没有控制权)

machineA
上,
java-version
给出

java version "1.7.0_91"
OpenJDK Runtime Environment (rhel-2.6.2.2.el6_7-x86_64 u91-b00)
OpenJDK 64-Bit Server VM (build 24.91-b01, mixed mode)
java version "1.7.0_65"
Java(TM) SE Runtime Environment (build 1.7.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
machineB
上,
/non/default/install/java-version
给出

java version "1.7.0_91"
OpenJDK Runtime Environment (rhel-2.6.2.2.el6_7-x86_64 u91-b00)
OpenJDK 64-Bit Server VM (build 24.91-b01, mixed mode)
java version "1.7.0_65"
Java(TM) SE Runtime Environment (build 1.7.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
两台机器都运行RedHat 6

为什么会出现错误?如何修复

谢谢


重要更新:我从
machineA
上的命令行运行了下面的命令。在
machineB
上,我最初使用
bash
脚本运行它们。这意味着我将它们放入
run.bash
中,然后从命令行运行
bash-run.bash
。那就是我出错的时候。当我在不使用任何脚本的情况下从命令行重新运行相同的命令时,它起作用了。因此,问题似乎与我将JAR从一台机器复制到另一台机器无关,而是与我以脚本的形式调用它们有关。所以现在的问题是:我如何修改
run.bash
和/或我执行它的方式来消除错误?
(因为我最终需要使用脚本)

你能在machineB上尝试第一个命令行,看看问题是否是“/non/default/install/java”吗?这个问题可能是个坏问题manifest@RC. 你是说运行
java-cp/bar/dep1.jar…
而不是
/non/default/install/java-cp/bar/dep1.jar…
?如果是这样,那就不是一个真正的选项,因为
machineB
上的默认java是1.6