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

JAI I/O工具在java程序运行时丢失,尽管在测试期间存在

鲍宁
2023-03-14

我的Java FX程序使用PDFBox并处理嵌入JPEG2000图像的PDF文件。

我在pom中包含了所需的依赖项。PDFBox网站上描述的xml文件。这是“依赖项”部分的摘录(我还尝试添加了

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.21</version>
    <type>jar</type>
</dependency>

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>jbig2-imageio</artifactId>
    <version>3.0.2</version>
</dependency>
<dependency>
    <groupId>com.github.jai-imageio</groupId>
    <artifactId>jai-imageio-core</artifactId>
    <version>1.4.0</version>
    <type>jar</type>
</dependency>  
<dependency>
    <groupId>com.github.jai-imageio</groupId>
    <artifactId>jai-imageio-jpeg2000</artifactId>
    <version>1.4.0</version>
</dependency>

我在NetBeans中用JUnit测试了一种使用Java高级图像I/O工具的方法,它按预期工作。

但是,当从NetBeans(运行三角形,这会导致mvn”-Dexec.args=-classpath%classpath my.package.MainApp”-DOMP_THREAD_LIMIT=1-DskipTests=true exec:java)或从命令行运行应用程序时,我得到:

无法读取JPEG2000图像:未安装Java高级图像(JAI)图像I/O工具

如果我查看NetBeans中的项目依赖关系树,我可以看到jai-imageio-core-1.4.0。jar和jai-imageio-jpeg2000-1.4.0。jar

如果我查看生成的具有依赖关系的jar,jai-Imageio-core和jpeg2000就会出现:

我用NetBeans的标准“build”菜单构建了这个程序,它在引擎盖下进行了一次mvn清洁安装

我还研究了这个问题,这个问题看起来很相似,但与我所做的没有什么不同。

发生了什么事?为什么在测试过程中会发现JAR,而在程序运行时却没有?


共有1个答案

束福
2023-03-14

使用Maven构建jar文件不包括目标jar中的依赖项。这通常是创建要包含在更大程序中的库时所需的。谷歌Maven Uber Jar来寻找如何构建一个可运行的Jar。

 类似资料:
  • 问题内容: 我需要帮助在特定时间(如下午2点)在服务器上运行Java程序(以索引新文件)。 有人告诉我Java有一些叫做Job的东西,但我不知道该如何使用。我尝试了这个: 但是有了这个程序仍在运行。 如何在指定时间运行程序? 问题答案: 有一个名为Quartz的API ,您的程序可以在其中调度“作业”,并在该时刻运行它。 在给出示例之前,请尝试使用此链接。 编辑:首先,您必须创建一个实现org.q

  • 在编写程序时,我们常常需要定时执行一些任务。例如,标准库mutexes和locks提供了的一些选项就需要这一定时功能:线程等待一段时间(duration)或者等到某一给定时刻(time_point)。 如果你需要得到当前时刻,你可以调用system_clock、monotonic_clock、high_resolution_clock中任何一个时钟的now()方法。例如: monotonic_cl

  • 问题内容: 我有两个运行Windows Server 2012的虚拟机。一个运行Jenkins,另一个运行Jenkins的构建作业之一。作业从Subversion中检出测试代码,然后在Windows批处理脚本中运行。该测试可以编译并运行,但是会失败,并显示。这些是使用Selenium和Firefox驱动程序的TestNG测试。 如果我使用完全相同的命令并从Windows命令行运行它,则测试成功。我

  • 例如,我想编写一个Java程序,在每天上午12点打印“Hello World”,如何使用Quartz调度器实现这一点? 这样地?我应该把打印“hello world”方法放在哪里?

  • 我的Springboot应用程序是为支持500 tps而设计的。应用程序连续提供500 TPS,但当我们使用下面的命令获取JFR时,应用程序TPS会下降到100以下。 JFR命令: /opt/drutt/local/jdk1.8.0_112/bin/jcmdJFR. start设置配置文件持续时间1m文件名/tmp/my_file_1.jfr JFR命令中有任何问题吗?JFR对性能下降有贡献吗?

  • 各位程序员,我构建了一个WPF/C#应用程序(使用. net 4),如果调试甚至自行启动“. exe”,该应用程序运行良好,该应用程序本身以管理员权限运行。在使用管理员权限运行时,我让它在“任务计划程序”中将自己添加为任务。我确保在创建任务时检查了“以最高权限运行”(并在任务计划程序中验证了一切都设置得像它应该的那样) 运行任务时,任务失败,我看到了以下错误:任务调度程序未能在任务“\MyClie