1

我有一个非常奇怪的问题,我无法弄清楚,问题是我的应用程序在 IDE(Eclipse)上完美运行,但在导出时却没有,当我运行 jar(双击)应用程序启动但一些功能丢失(从模板文件加载,但从普通文件加载时不会发生这种情况),当我尝试从控制台(java - jar my.jar)运行它以查看任何错误消息时,结果证明我的应用程序工作得很好!:S ...

更多信息:

我的应用程序在 Windows 7 上运行

我启动任务管理器,我注意到当我使用名称 java.exe *32 双击它启动我的应用程序时,当我从命令行执行它时,它的名称为 java.exe(没有“*32”) ,据我所知,我没有编写任何与 32 位或 64 位功能相关的程序。

“解决了”

好吧,我无法按照我想要的方式解决它,据我所知,我发现我运行 x32 和 x64 的 2 个 java 版本之间存在问题,我删除了 32 位版本并开始作为一个魅力工作,但我仍然不确定发生了什么,我感谢@Sajal Dutta 它的评论之一帮助我理解了部分问题,无论如何感谢你们所有人,我会继续搜索直到我发现问题...

4

3 回答 3

0

由于它通过命令行工作,但在双击 jar 时不能工作,因此工作目录可能不同(并且您正在使用相对路径加载模板)。当您通过双击运行可执行 jar 时,在某些操作系统上,工作目录是主目录,而当您从命令行运行时,它是您当前所在的目录。

于 2013-08-16T13:31:32.990 回答
0

当您从 Eclipse 创建 jar 时,您的资产不会被复制到 jar 或位置不会被保留。打开 jar 并检查您的模板是否在正确的位置,或者您是否拥有它。

要让导出的 jar 包含您的资产/资源 -

  1. 在 Eclipse 中右键单击您的项目。然后新建-> 源文件夹。
  2. 将源文件夹命名为任何名称。例如template_src。
  3. 将模板的整个目录复制或拖动到 template_src。然后做罐子。
于 2013-08-16T13:28:55.493 回答
0

jar 中的“文件”不是由 File 处理的,而是资源;

URL url = getClass().getResource("...");
InputStream in = getClass().getResourceAsStream("...");

然后,jar 内或非 Windows 平台上的文件路径区分大小写

"Template_A.xml"

不是

"template_a.xml"

您也可以使用 7zip 或 WinZip 检查 jar。

于 2013-08-16T13:37:56.273 回答