來啓動測試,我必須設置一個大的jar文件列表作爲類路徑的參數: -classpath a.var; b.jar; .... - 是否有其他方法指定庫? 例如是否可以設置文件作爲參數,並在文件中包含路徑所有庫 例如: -classpath MYFILE.TXT 和MYFILE.TXT包含../a.jar ../b.jar ..等如何設置類路徑參數
感謝,
來啓動測試,我必須設置一個大的jar文件列表作爲類路徑的參數: -classpath a.var; b.jar; .... - 是否有其他方法指定庫? 例如是否可以設置文件作爲參數,並在文件中包含路徑所有庫 例如: -classpath MYFILE.TXT 和MYFILE.TXT包含../a.jar ../b.jar ..等如何設置類路徑參數
感謝,
午餐測試我強烈建議你使用Ant。
與螞蟻有<classpath>
元素,它允許您指定「定目錄內的所有jar文件」:
<classpath>
<pathelement path="${classpath}"/>
<fileset dir="lib">
<include name="**/*.jar"/>
</fileset>
<pathelement location="classes"/>
<dirset dir="${build.dir}">
<include name="apps/**/classes"/>
<exclude name="apps/**/*Test*"/>
</dirset>
<filelist refid="third-party_jars"/>
</classpath>
您可以設置環境變量CLASSPATH(使用正確的語法你的shell要做到這一點,前bash,Windows XP等)。
您還可以創建某種形式的配置文件,爲您一直這樣做,例如.bashrc。這當然會影響每次在該配置文件下使用java
命令。
如果您的主類在jar中,您也可以使用jar的清單來設置類路徑。 Sun/Oracle has a tutorial page on doing this。創建一個名爲Manifest.txt的文件。在該文件中添加一行:
類路徑:jar1名jar2名稱目錄名/ jar3名
其中各種jar1-name
部分是在classpath實際罐子。
然後使用創建的jar:
罐子立方英尺MyJar.jar Manifest.txt MyPackage的/ *類
還是Ant Jar Task與清單屬性設置,或使用the Maven jar plugin或不過你的構建工作,獲取罐子的清單。
或繼續像當前一樣使用--classpath。
您可以以編程方式添加一條新路的類路徑:
String currentPath = System.getProperty("java.library.path");
System.setProperty("java.library.path", current + ":/path/to/my/libs");
// this forces JVM to reload "java.library.path" property
Field fieldSysPath = ClassLoader.class.getDeclaredField("sys_paths");
fieldSysPath.setAccessible(true);
fieldSysPath.set(null, null);
您可以添加的路徑,所以沒有必要列出所有的罐子。這隻會改變您的JVM實例的類路徑,所以它不會影響其他Java應用程序。
更新:
:
和/
是特定於UNIX LIB-路徑和文件夾路徑分隔符。對於多操作系統,您應該使用「path.separator」和「file.separator」system properties。
你能開發更多的請嗎?例如,我有lib1.jar,lib2.jar,... libi.jar,這些文件夾可以在不同的文件夾中找到,我該如何探索您的建議?謝謝 – user739991 2011-05-05 14:22:37
添加更多路徑:'「:/ path/to/my/libs1:/ path/to/mylibs2:/ path/etc」 – 2011-05-05 15:54:51
由於Java 6,你可以在你的classpath中使用通配符:
java -classpath 'lib/*'
注意,您必須引用類路徑字符串,以避免外殼擴展通配符。
我認爲這相當於java -classpath lib/* – 2011-05-05 13:20:17
@JB:不,這正是會是錯誤的。 – 2011-05-05 13:21:23
@Michael Borgwardt:來自http://download.oracle.com/javase/6/docs/technotes/tools/windows/classpath.html:「例如,類路徑條目foo/*指定目錄中的所有JAR文件命名爲foo「。 – 2011-05-05 13:23:21
從Java 6開始,您可以在classpath中使用通配符,將所有jar包含在目錄中。見http://download.oracle.com/javase/6/docs/technotes/tools/windows/classpath.html。
這非常方便,但也非常危險,因爲它依賴文件系統來處理罐子的排序順序。這可能會在存在衝突的類時導致令人討厭的類路徑錯誤,因爲不同的環境中可能會優先考慮不同的JAR。 – 2014-11-07 17:24:46
建立在一個罐子/戰爭/ .. – 2011-05-05 13:09:00