这是我在PATH :
PATH=/opt/ClosureCompiler:/home/vmadmin/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
/opt/ClosureCompiler有一个compiler.jar ,但是当我调用
java -jar compiler.jar
我明白了
Unable to access jarfile compiler.jar
虽然java -jar /opt/ClosureCompiler/compiler.jar工作得很好。
那么,java可以遵循PATH来parsing文件名吗? 如果是这样 – 我做错了什么?
在java可执行文件中没有规定用于search.jar文件的目录列表。 编写一个包装脚本,以完整path执行java .jar。
#!/bin/bash exec java -jar /opt/ClosureCompiler/compiler.jar
最简单的select是使用chmod +x compiler.jar来使jar可以被改变。 然后你可以从PATH运行它,如下所示:
compiler.jar --help
这些是使用java命令运行文件的其他选项。
Java使用CLASSPATH来查找类和其他资源。 类path可以包含jar和目录。 Java将search类path中的资源。 定义包含要search的path的环境variables。 path分隔符是; 在Windows上:在大多数其他系统上。 这将适用于命令行上的类,但不是jar子。 如果你读了compiler.jar的manifest ,你可以写一个简短的Compiler类来调用主类。 或者,直接调用主类而不是Compiler (如下所述)在清单中指定。
您可能已经定义了一个类path。 尝试echo $CLASSPATH来查看它是否是。 尝试
export CLASSPATH=$CLASSPATH:/opt/ClosureCompiler:/opt/ClosureCompiler/compiler.jar java Compiler
或closures(其他jar子将有不同的主类)。
export CLASSPATH=$CLASSPATH:/opt/ClosureCompiler/compiler.jar java com.google.javascript.jscomp.CommandLineRunner
您应该在您的path中添加/opt/ClosureCompiler来定义您的CLASSPATH 。 你不需要/opt/ClosureCompiler在你的path中。
这是一个示例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 。