Java
java在解析.jar文件名時是否尊重PATH env變數?
這就是我所擁有的
PATH
:PATH=/opt/ClosureCompiler:/home/vmadmin/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
有一個
compiler.jar
in/opt/ClosureCompiler
,但是當我打電話時java -jar compiler.jar
我明白了
Unable to access jarfile compiler.jar
雖然
java -jar /opt/ClosureCompiler/compiler.jar
工作得很好。那麼,java可以遵循
PATH
文件名解析嗎?如果是這樣 - 我做錯了什麼?
執行檔中沒有
java
用於搜尋 .jar 文件的目錄列表的規定。java
編寫一個使用 .jar 的完整路徑執行的包裝腳本。#!/bin/bash exec java -jar /opt/ClosureCompiler/compiler.jar
最簡單的選擇是使用
chmod +x compiler.jar
. 然後你可以從你的執行它PATH
如下: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
或關閉(其他罐子將有不同的主類)。
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
。