我写的程序,需要调用几个库,这些库的jar文件全部放在lib目录下,我写了一个bat,下面是内容:
@echo off
if "%OS%" == "Windows_NT" setlocal
rem set CLASSPATH=%CLASSPATH%;.
set ENGINE_HOME=.
if exist "%ENGINE_HOME%\lib\jdom.jar" goto okLIB
set ENGINE_HOME=..
:okLIB
set ENGINE_LIB= "%ENGINE_HOME%\lib\jdom.jar;%ENGINE_HOME%\lib\log4j-1.2.8.jar;%ENGINE_HOME%\lib\mysql-connector-java-3.1.0-alpha-bin.jar"
echo %ENGINE_LIB%
java -jar test.jar -classpath"%ENGINE_LIB%"
pause
结果如下:
"..\lib\jdom.jar;..\lib\log4j-1.2.8.jar;..\lib\mysql-connector-java-3.1.0-alpha
-bin.jar"
Exception in thread "main" java.util.zip.ZipException: 系统找不到指定的文件。
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(Unknown Source)
at java.util.jar.JarFile.<init>(Unknown Source)
at java.util.jar.JarFile.<init>(Unknown Source)
请按任意键继续. . .请高手指教
@echo off
if "%OS%" == "Windows_NT" setlocal
rem set CLASSPATH=%CLASSPATH%;.
set ENGINE_HOME=.
if exist "%ENGINE_HOME%\lib\jdom.jar" goto okLIB
set ENGINE_HOME=..
:okLIB
set ENGINE_LIB= "%ENGINE_HOME%\lib\jdom.jar;%ENGINE_HOME%\lib\log4j-1.2.8.jar;%ENGINE_HOME%\lib\mysql-connector-java-3.1.0-alpha-bin.jar"
echo %ENGINE_LIB%
java -jar test.jar -classpath"%ENGINE_LIB%"
pause
结果如下:
"..\lib\jdom.jar;..\lib\log4j-1.2.8.jar;..\lib\mysql-connector-java-3.1.0-alpha
-bin.jar"
Exception in thread "main" java.util.zip.ZipException: 系统找不到指定的文件。
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(Unknown Source)
at java.util.jar.JarFile.<init>(Unknown Source)
at java.util.jar.JarFile.<init>(Unknown Source)
请按任意键继续. . .请高手指教
---bin
------test.bat
---lib
------jdom.jar
------etc.jar
如果是我自己在运行java -classpath "..\......",则出现上面的问题
希望有高手能给我讲一下关于classloader的规则。 再过两天结贴。