首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

把工程打包为可执行的jar包,但是执行jar文件时它却还去访问原来工程里的东西,为啥?

2012-03-30 
求助:把工程打包为可执行的jar包,但是执行jar文件时它却还去访问原来工程里的东西,为啥???在eclipse里工程

求助:把工程打包为可执行的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)。

热点排行
Bad Request.