日期:2014-05-20  浏览次数:20612 次

求助:把工程打包为可执行的jar包,但是执行jar文件时它却还去访问原来工程里的东西,为啥???
在eclipse里工程叫smartAST,最顶级的包叫smartAS,文件目录如下:
└─smartAS
        ├─client
        │     ├─bin
        │     ├─gui
        │     ├─icons
        │     └─lib
        └─server
下面有client和server两个包,分别为客户端和服务器端程序。
现在在smartAST目录下打包客户端,命令如下:
jar   cmf   mainclassCL.txt   client.jar   smartAS/client/*
其中的mainclassCL.txt文件内容为:
Main-Class:   smartAS.client.Client
Class-Path:   smartAS/client/lib/empressJDBC_cat4.jar

当前目录运行client.jar没有问题,但是把它拷贝到别处的时候,就不行了,出了很怪异的问题,但是把原来的工程包smartAS复制到跟client.jar一个文件夹里后,client.jar就可以运行了,此时视图删除文件夹smartAS时提示有文件正在使用了,比如某个图片。
想不通啊,明明把所有的东西一起打包了啊,为啥还要去找原来的工程包(文件夹)里的东西呢?

高手指点哈,路过的给点思路也好啊,谢了先!

------解决方案--------------------
打包到jar里面的文件用相对路径是访问不到的,正好你的jar放在source目录下,所以访问到了工程里面的文件,否则连文件都找不到
以前打包jar带properties进去的时候访问都要用
InputStream stream = ClassLoader.getSystemResourceAsStream(propsFileName);
Properties parms = new Properties();
parms.load(stream);
来做的
------解决方案--------------------
修改.mf文件,在Class-path里面加上所有的资源(比如你的img)。