gpt4 book ai didi

java - 可执行 JAR 执行不同于 eclipse 执行

转载 作者:行者123 更新时间:2023-12-04 19:47:31 25 4
gpt4 key购买 nike

我使用 Java 创建了一个应用程序,它使用 Apache POI 处理 excel 文件。问题是,当我从 eclipse 运行代码时,它工作正常,但是当我为应用程序制作可执行 jar 时(使用 eclipse 导出可执行 jar 选项),jar 工作正常但结果不同,甚至大小生成的excel文件不一样。

我做了很多研究,但我没有找到一个方便的解决方案。

最佳答案

啊是的。几年前我也有过同样的经历。

在 Eclipse 中创建可运行的 .jar 时,您可以选择如何处理来自库(例如本例中的 Apache POI)的 .class 文件:

  1. 将需要的类(.class文件)打包成jar文件
  2. 将需要的库(.jar文件)打包成jar文件
  3. 将库复制到子文件夹

有趣的是,对于 Apache POI,三种不同的打包方式产生了巨大的差异:

  1. 启动速度
  2. 执行速度
  3. 内存要求(RAM)
  4. 在生成的输出文件中

我不记得哪个给了我预期的结果。所以你必须自己尝试一下。 (从 Eclipse 如何启动 Java 项目来看,它应该是 #3,子文件夹中的库,这会得到相同的结果)。但是:无论如何都要试试其他的;正如我所说, future 存在巨大差异。

TBH Apache POI 是不应该如何编写软件的“好”示例。它非常臃肿,需要大量 RAM,并且有一个非常有趣/奇怪的行为。所以我为更新的 .xls 文件格式编写了我自己的库,它只是快了 100 倍,更小且更可靠。并且字符串缓存和单元格格式操作优化更好。所以好 1000000 倍 :-P

好处是 POI 开发团队知道他们项目的局限性和缺点,并提供多种处理文件的模式,以克服这些缺点。所以,归根结底,向他们致敬!

关于java - 可执行 JAR 执行不同于 eclipse 执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66738027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com