我有一个用 Java 构建的应用程序,当在应用程序中按下某个按钮时,另一个 jframe 应该弹出一条消息。我制作的 ant 文件将可运行的 jar 放入我的 Eclipse 项目中的文件夹中。构建 jar 后,我在它所在的文件夹中运行 jar,它运行良好。我可以单击使弹出窗口出现的按钮,它确实出现了。
当我把罐子移到桌面上时,问题就来了。然后运行 jar 启动应用程序,但按下按钮什么也不做(没有弹出窗口)。
现在,我知道我之前遇到过一些问题,包括一些图像资源,并且不得不使用 getResource() 等。我不明白为什么我必须做这样的事情,因为所有“资源”都只是指定的 .class 文件在构建路径中。我的意思是,所有应用程序应该做的就是创建一个 jframe ......
编辑:添加 build.xml 编辑:精简 build.xml ——我认为问题在于 JAR 的构建。
<!--Creates the deployable jar file -->
<target name="jar" depends="compile">
<echo>"Making Deployable Jar..."</echo>
<jar destfile="${shipping.dir}/POSsystem.jar" basedir="${build.dir}">
<fileset dir="." includes="${imgs.dir}/**"/>
<fileset dir="." includes="db/**"/>
<manifest>
<attribute name="Built-By" value="${user.name}"/>
<attribute name="Main-Class" value="${main-class}" />
<attribute name = "SplashScreen-Image" value="${splash-screen}" />
</manifest>
</jar>
<echo>"Success Making Deployable Jar..."</echo>
</target>
编辑 3:添加了通过命令行运行的输出。
C:\Users\Matt\Desktop>java -jar POSsystem.jar
LOG COULD NOT BE CREATED!
java.io.IOException: The system cannot find the path specified
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(Unknown Source)
at pos.log.GeneralLog.beginLog(Unknown Source)
at pos.main.POSsystem.main(Unknown Source)
这是第一个错误。应用程序应在 JAR 中的日志文件夹中保留一个 log.txt。您可以在 build.xml(发布的第一件事)中看到我将要构建的日志文件夹添加到 JAR 中,这很好,但是我的 log.java 代码中的路径显然会给我带来问题,因为它很难 -编码路径。所以我的问题是:如何在 JAR 文件中包含资源的路径。我知道要包含图像,我会执行以下操作: javax.swing.ImageIcon(getClass().getResource("/images/pos_header_icon.png")); 但我不确定如何访问文件位置...