weixin_57067291 2024-01-24 16:56 采纳率: 72.7%
浏览 5
已结题

JAVA jar转exe报错

使用 exe4j_windows-x64_6_0_2将JAR转为EXE程序打开时出现以下错误 以下为日志提示,想请问下各位这是由于什么原因造成的,怎么去解决该问题 谢谢

java.io.FileNotFoundException: serial_parameter.properties (系统找不到指定的文件。)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at java.io.FileInputStream.<init>(Unknown Source)
    at com.mutouyizhi.ocr.Utils.getProperties(Utils.java:26)
    at com.mutouyizhi.ocr.Utils.getServerSocket(Utils.java:101)
    at com.mutouyizhi.ocr.LoopConnectServerRunnable.<clinit>(LoopConnectServerRunnable.java:13)
    at com.mutouyizhi.ocr.Main.main(Main.java:19)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.exe4j.runtime.LauncherEngine.launch(LauncherEngine.java:85)
    at com.exe4j.runtime.WinLauncher.main(WinLauncher.java:94)
java.lang.ExceptionInInitializerError
    at com.mutouyizhi.ocr.Main.main(Main.java:19)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.exe4j.runtime.LauncherEngine.launch(LauncherEngine.java:85)
    at com.exe4j.runtime.WinLauncher.main(WinLauncher.java:94)
Caused by: java.lang.NullPointerException
    at com.mutouyizhi.ocr.Utils.getServerSocket(Utils.java:105)
    at com.mutouyizhi.ocr.LoopConnectServerRunnable.<clinit>(LoopConnectServerRunnable.java:13)
    ... 7 more

  • 写回答

2条回答 默认 最新

  • 专家-郭老师 Java领域新星创作者 2024-01-24 17:19
    关注

    你的程序出错的原因在于 java.io.FileNotFoundException,因为你的程序试图打开一个文件 serial_parameter.properties,但是没有在预期的位置找到这个文件。你可以看到这个错误信息在堆栈跟踪中的第一行。
    看起来你的代码在 Utils.java 的第26行试图打开这个文件,然后在 Utils.java 的第101行试图获取一些属性,可能是从这个文件中。稍后,当你的程序试图初始化 LoopConnectServerRunnable 类的时候,由于无法找到该文件,它引发了一个 NullPointerException。
    为了解决这个问题,你需要做以下两件事情:

    确保 serial_parameter.properties 文件在正确的位置。你需要确定你的程序期望在何处找到这个文件,然后确保文件存在于那个位置。可能你需要将这个文件包含在你的jar文件中,或者将它放在特定的文件夹中。
    你的代码需要能够在文件不存在的情况下正确处理。这可能意味着在尝试打开文件时捕获 FileNotFoundException,并采取适当的补救措施,或者在初始化 LoopConnectServerRunnable 之前,你的代码需要检查是否已经成功加载了文件。

    你需要回到你的代码,并且检查 Utils.java 和 LoopConnectServerRunnable.java,找出程序预期在何处找到 serial_parameter.properties,然后确保文件存在于那里。
    另外,如果你的程序依赖于某个特定的工作目录,或者搜索文件的相对路径,并且这个路径在将jar转换为exe之后发生了改变。那么你可能需要考虑修改你的代码,使其能够正确地在不同的工作目录和环境中找到文件。如果可能,请尝试使用类路径资源,而不是文件系统路径,来访问你的资源。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月6日
  • 已采纳回答 1月29日
  • 创建了问题 1月24日

悬赏问题

  • ¥15 QQ邮箱过期怎么恢复?
  • ¥15 登录他人的vue项目显示服务器错误
  • ¥15 (标签-android|关键词-app)
  • ¥60 如何批量获取json的url
  • ¥15 comsol仿真压阻传感器
  • ¥15 Python线性规划函数optimize.linprog求解为整数
  • ¥15 llama3中文版微调
  • ¥15 pg数据库导入数据序列重复
  • ¥15 三分类机器学习模型可视化分析
  • ¥15 本地测试网站127.0.0.1 已拒绝连接,如何解决?(标签-ubuntu)