这是我所拥有的PATH
:
PATH=/opt/ClosureCompiler:/home/vmadmin/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
有一个compiler.jar
,/opt/ClosureCompiler
但是当我打电话时
java -jar compiler.jar
我明白了
Unable to access jarfile compiler.jar
尽管java -jar /opt/ClosureCompiler/compiler.jar
工作得很好。
那么,java 可以遵循PATH
文件名解析吗?如果可以 - 我做错了什么?
答案1
可执行文件中没有java
提供搜索 .jar 文件的目录列表的功能。编写一个使用java
.jar 完整路径执行的包装器脚本。
#!/bin/bash
exec java -jar /opt/ClosureCompiler/compiler.jar
答案2
最简单的选择是使用 使 jar 可执行chmod +x compiler.jar
。然后你可以PATH
按如下方式从你的 jar 中运行它:
compiler.jar --help
java
这些是使用命令运行文件的其他几个选项。
Java 使用 CLASSPATH 来查找类和其他资源。类路径可以包含 jar 和目录。Java 将在类路径中搜索资源。定义一个包含要搜索的路径的环境变量。路径分隔符在 Windows 上是 ;,在大多数其他系统上是 :。这适用于命令行上的类,但不适用于 jar。如果您阅读了,manifest
您compiler.jar
可以编写一个调用主类的简短Compiler
类。或者,只需直接调用清单中指定的主类,而不是Compiler
(如下所述)。
你可能已经定义了类路径。尝试echo $CLASSPATH
看看是否已定义。尝试
export CLASSPATH=$CLASSPATH:/opt/ClosureCompiler:/opt/ClosureCompiler/compiler.jar
java Compiler
或用于关闭(其他 jar 会有不同的主类)。
export CLASSPATH=$CLASSPATH:/opt/ClosureCompiler/compiler.jar
java com.google.javascript.jscomp.CommandLineRunner
您应该定义CLASSPATH
添加/opt/ClosureCompiler
到路径的位置。您不需要它/opt/ClosureCompiler
在您的路径中。
这是一个示例 Compiler.java 文件。
import com.google.javascript.jscomp.CommandLineRunner;
public class Compiler {
public static void main (String[] args) {
CommandLineRunner.main( args );
}
}
可以用命令来编译javac -cp compiler.jar Compiler.java
。