Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 导出包含项目源文件夹以及所有其他文件夹的可运行JAR?_Java_Eclipse_File Io_Jar - Fatal编程技术网

Java 导出包含项目源文件夹以及所有其他文件夹的可运行JAR?

Java 导出包含项目源文件夹以及所有其他文件夹的可运行JAR?,java,eclipse,file-io,jar,Java,Eclipse,File Io,Jar,我正在尝试导出到具有以下结构的项目的可运行JAR: Project | |---Source folder | | | | | .java files | | |---Image folder | | .png files 使用ImageIO.read(新文件(“ImageFolder/image.png”))在.java文件中读取.pn

我正在尝试导出到具有以下结构的项目的可运行JAR:

Project
   |
   |---Source folder
   |         |
   |         |
   |     .java files
   |
   |
   |---Image folder
             |
             |
         .png files
使用
ImageIO.read(新文件(“ImageFolder/image.png”))在
.java
文件中读取
.png
图像
当我在Eclipse中运行程序时,它可以正常工作,但是如果我导出到可运行的JAR,我会在stacktrace中得到以下异常:

javax.imageio.IIOException: Can't read input file!                                                              
        at javax.imageio.ImageIO.read(Unknown Source) 
以下是我在Eclipse中的项目截图:

如何将
cardImages
文件夹包含在我的JAR中,以便可以读取
新文件(“cardImages/10C.png”)
  • 右键单击您的项目
  • 选择“生成路径”=>“配置生成路径…”
  • 在新打开的窗口中检查“cardImages”文件夹
  • 它应该在你的罐子里提取

    只是一个提示,对于资源更喜欢使用

        InputStream is = ClassLoader.getSystemResourceAsStream("resources/sample.txt");
    

    使用目录导出,使用流读取图像文件,
    getClass()

    通常可运行的JAR,文件操作与它的路径是真实的,在那里它变得异常。 前

    然后 您试图读取的文件,
    c:/myFolder/cardimages/imagename。


    File是用于从文件系统访问文件的类。不是从罐子里。你试过将cardmages作为源文件夹吗?使用目录导出,使用流getClass()读取图像文件。getResourceAsStream('cardmages/imagename')。@Ray作为临时修复程序,但下面的答案肯定是正确的方法请看这里。实际上,这是最糟糕的做法。因此我将其称为
    ImageIO.read(getClass().getResourceAsStream('cardImages/10C.png');)
    我的程序也需要将图像写入同一文件夹,如何以类似的方式完成此操作?然后编写图像怎么样?我的程序正在从
    cardImages
    文件夹加载一个图像,使用加载的图像创建一个新图像,然后将新图像写入
    cardImages
    只能用于读取,因为它返回一个InputStream。JAR文件中必须有一个hack do write文件,但不建议在运行时修改jar,因为您可能会遇到许多问题。如果您必须编写文件,最好的做法是在jar所在的目录中创建一个文件夹,并在那里管理您的文件(如放置配置文件或cardImages),您可以通过以下方式完成:C:User/adom/documents/jarName.jar/fileName.txt将“!”字符设为JAR文件。
    c:/myFolder>yourjar.jar