我写的程序,需要调用几个库,这些库的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)
请按任意键继续. . .请高手指教

解决方案 »

  1.   

    目录结构如下
    ---bin
    ------test.bat
    ---lib
    ------jdom.jar
    ------etc.jar
      

  2.   

    怀疑楼主jar不是可执行的,没指定main class
      

  3.   

    指定了main class,如果我将lib中的jar文件拷贝到jre\lib\ext\下,则运行正常,
    如果是我自己在运行java -classpath "..\......",则出现上面的问题
      

  4.   

    在manifest文件中的classpath中指定就可以了,没问题的
      

  5.   

    指定了相对路径,不过还是不行,我用了一个生成exe文件的工具,就可以了。
    希望有高手能给我讲一下关于classloader的规则。 再过两天结贴。