当前位置: 首页 > 知识库问答 >
问题:

项目可以在eclipse中工作,但在打包到jar中之后就不能了

孟成化
2023-03-14

我的项目使用itext7来创建PDF文件。当我从eclipse启动时,一切都很好。当我把它打包成罐子时,一切都很好,直到我想创建一个PDF。然后我得到:

线程“JavaFX应用程序线程”com中出现异常。itextpdf。伊奥。IOException:I/O异常
。。。。。

原因:java。伊奥。FileNotFoundException:C:\Users\puser\eclipse workspace\Document\target\SE001-0.1.1-SNAPSHOT。jar\img\Safety。png(系统找不到指定的路径)

项目文件夹将图像保存在src/main/resources/img。一旦创建了jar,它的根目录就只有/img。这意味着您不能只指定一个直接路径,因为它在创建jar时会发生变化。JavaFX图像与。。

Image user = new Image(getClass().getResourceAsStream("/img/Document.png"));

在itext7中使用它是行不通的,因为ImageDataFactory。create()正在查找字节[],这是一个输入流。

现在尝试使用:

Image safetyImage = new Image(ImageDataFactory.create(System.getProperty("user.dir") + "/img/Safety.png"));

因为罐子不在路径内,所以不起作用。

我可以用什么来指向jar中的图像文件并将其与ext7一起使用?

共有1个答案

赫连俊悟
2023-03-14

mkl是正确的,谢谢!

我创建了一个实用方法,将输入流转换为字节数组。

   public static byte[] toByteArray(InputStream in) throws IOException {
          //InputStream is = new BufferedInputStream(System.in);
          ByteArrayOutputStream os = new ByteArrayOutputStream();
          byte [] buffer = new byte[1024];
          int len;
          // read bytes from the input stream and store them in buffer
            while ((len = in.read(buffer)) != -1) {
                // write bytes from the buffer into output stream
                os.write(buffer, 0, len);
            }
            return os.toByteArray();
       }

然后我在ImageDataFactory中使用了该实用程序。create()方法

Image safetyImage = new Image(ImageDataFactory.create(toByteArray(getClass().getResourceAsStream("/img/Safety.png"))));
 类似资料:
  • 正在更新属性文件:/home/mehmet/works/netbeansprojects/hsm_java/build/built-clean.属性删除目录/home/mehmet/works/netbeansprojects/hsm_java/build 清洁: 初始化: 已创建目录:/home///netbeansprojects/hsm_java/build/empty 已创建目录:/hom

  • 我需要能够使用不同的eclipse项目运行同一个项目。我们需要将项目从jdk1.6升级到jdk1.8。所以我有jdk1.6版本的Eclipse Luna和1.8版本的Eclipse Neon。 我已经建立并运行了1.8版本。但是,当我尝试在Luna中构建1.6版本时,出现了以下错误: do project taskproxy:[ant]ant:无法将输出设置为${DIR\u LOC\u BUILD

  • 我正试图将eclipse中的java项目导出为可运行的jar,但由于某种原因,可运行的jar无法工作。如果双击可执行jar,它什么也不做。我尝试将所需库提取并打包到生成的JAR中。 所以我也尝试导出一些更简单的项目,那些工作很好。最大的区别是我的真实项目有文件:图像和xml文件。 在代码中引用它们,如下所示:

  • 几天来,我一直在用头撞这个,完全被难倒了。下面是纲要: 我有一个Eclipse插件项目,使用Tycho通过Maven 3构建 在Maven中,我已经设置了maven-jarsigner-plugin来使用我的keystore对jars进行签名(有关keystore的详细信息,请参阅下文) 我的密钥库里有个Thawte签名的代码签名证书 我可以从目标/*中获取任何签名的jar文件,并在上面运行“ja

  • 我正在尝试将我的程序导出为一个可运行的JAR。该程序在eclipse中工作得非常好,但它不能作为一个可运行的JAR运行。我正在使用另外3个jar文件作为引用jar,这样我就可以使用音频,我认为这可能是问题所在。可运行的jar启动,但它只是一个全白的窗口,程序没有启动。 我点击我的项目,然后右键点击并选择“导出”,然后我选择“可运行的JAR”选项。我尝试使用所有三个处理引用库的选项来创建jar。 将

  • 我在将java文件导出到可运行的jar文件时遇到了问题。在eclipse中,它工作得很好,但是当我导出它时,它就不工作了。 我已经尝试过(java-jar myjar.jar)获取日志,但它说“无法访问jar文件” 因为当我将它放在注释中时,当我导出时,它运行,但没有映像。 我也尝试过这样的方法:,但它也不起作用。我做错了什么?如何导出JLabel上带有图像的可运行jar文件? (这是我的JLab