首先要声明的是,我按照大家之前的解释,已经可以把图片打包入jar中,而且在任何路径运行该jar程序皆正确的读取图片。
    但是在源代码中有一段是新创建一个图片(或者说读取原来的图片再更改),这里就有问题了,发现只能正确的读取jar中的图片,但是我现在没办法更改。
    项目中,养家糊口,谢谢!!!!

解决方案 »

  1.   

    to:CrazyGou
    你给的代码我看了,好像跟我的思路没什么不一样的。我给出我的代码,大家看看有什么
    地方是不对了。
    原先就有这样的一幅图片result.jpg
    try {
       URL path=ClassLoader.getSystemResource("shenyan/result.jpg");
       System.out.println(path.getFile());
       fos_jpg = new FileOutputStream(path.getFile());
       
       ChartUtilities.writeChartAsJPEG(fos_jpg,1000,chart,400,300,null);
     }
     catch(IOException eio)
     {
     
     } 
     finally {
       try {
    fos_jpg.close();
       }
    通过上面的代码重新改变了图片的内容。
    在eclipse下正确执行。但是打包jar以后发现jar里面原来图片根本没有改变,所以在其他地方在使用URL path=ClassLoader.getSystemResource("shenyan/result.jpg");或者图片当然就没什么变化了。怎么解决这个问题?????项目中,养家糊口,谢谢!!!!
      

  2.   

    好的,我按照你的试试,我开始看懂一点点你的代码了,关键是你用了JarFile这个类,所以可能会成功,但是我有几处不明白,所以不知道怎么试
    String currentJarPath = URLDecoder.decode(YourClassName.class.getProtectionDomain().getCodeSource().getLocation().getFile(), "UTF-8"); 
    这里的YourClassName是指什么????
    JarEntry dbEntry = currentJar.getJarEntry("包名/配置文件"); 
    这里的包名怎么填??
    我是把原来的代码打包成了一个test,test.jar下面有shenyan文件夹,这个文件夹里面有我想要的文件result.jpg
    非常感谢你的热心帮助,不管成功与否,谢谢!!!!
      

  3.   

    YourClassName --> Jar中任一个类JarEntry dbEntry = currentJar.getJarEntry("shenyan/result.jpg");