[英]adding classpath in linux
export CLASSPATH=.;../somejar.jar;../mysql-connector-java-5.1.6-bin.jar
java -Xmx500m folder.subfolder../dit1/some.xml
cd ..
上述將類路徑設置為linux中已經存在的類路徑的語句是否正確
我不喜歡設置 CLASSPATH。 CLASSPATH 是一個全局變量,因此它是邪惡的:
因此,首選方法是為 jvm 的每次運行設置類路徑,例如:
java -Xmx500m -cp ".:../somejar.jar:../mysql-connector-java-5.1.6-bin.jar" "folder.subfolder../dit1/some.xml
如果它變得很長,標准過程是將其包裝在 bash 或批處理腳本中以節省輸入。
除非您有充分的理由,否則始終建議不要破壞性地破壞現有的類路徑。
以下行保留現有的類路徑並添加到它上面。
export CLASSPATH="$CLASSPATH:foo.jar:../bar.jar"
在 Windows 和 Linux 中設置 Classpath 的重要區別是路徑分隔符是“;” Windows 中的(分號)和 Linux 中的“:”(冒號)。 此外, %PATH%
用於表示 Windows 中現有路徑變量的值,而${PATH}
在 Linux 中用於相同目的(在 bash 外殼中)。 這是在 Linux 中設置類路徑的方法:
export CLASSPATH=${CLASSPATH}:/new/path
但因此類路徑非常棘手,您可能想知道為什么即使設置了正確的類路徑,您的程序也無法運行。 注意事項:
-cp
選項覆蓋CLASSPATH
環境變量。-cp
和CLASSPATH
環境變量。 linux 下的路徑由冒號 ( :
) 分隔,而不是分號 ( ;
),因為劇院在他的示例中正確使用了它。 我相信 Java 尊重這個約定。
作為andy 建議的替代方法,您可以使用以下形式(在命令期間設置 CLASSPATH):
CLASSPATH=".:../somejar.jar:../mysql-connector-java-5.1.6-bin.jar" java -Xmx500m ...
哪個對你更方便。
對於linux用戶,總結和補充其他人在這里所說的,你應該知道以下幾點:
全局變量並不邪惡。 $CLASSPATH 特別是 Java 用於查看多個目錄以查找腳本所需的所有不同類(除非您使用 -cp 覆蓋明確告訴它)。
冒號 (":") 字符分隔不同的目錄。 只有一個 $CLASSPATH 並且其中包含所有目錄。 因此,當您運行“export CLASSPATH=....”時,您希望包含當前值“$CLASSPATH”,以便將 append 包含在其中。 例如:
export CLASSPATH=. export CLASSPATH=$CLASSPATH:/usr/share/java/mysql-connector-java-5.1.12.jar
在上面的第一行中,您只使用一個簡單的“點”來啟動 CLASSPATH,它是您當前工作目錄的路徑。 這樣,每當您運行 java 時,它都會在當前工作目錄(您所在的目錄)中查找類。 在上面的第二行中,$CLASSPATH 獲取您之前輸入的值 (.) 並將路徑附加到 mysql 驅動程序。 現在,java 將尋找驅動程序和您的課程。
echo $CLASSPATH
非常方便,它返回的內容應該讀起來像一個冒號分隔的所有目錄列表,其中包含您想要的所有目錄 java 尋找運行腳本所需的內容。
Tomcat 不使用 CLASSPATH。 在此處閱讀如何處理: https://tomcat.apache.org/tomcat-8.0-doc/class-loader-howto.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.