JFrame弹出窗口没有显示在JAR中

时间:2013-01-25 23:53:01

标签: java swing ant

我有一个用Java构建的应用程序,当在应用程序中按下某个按钮时,另一个jframe应弹出一条消息。我制作的ant文件将runnable 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>

<!--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/**"/>

编辑3:通过命令行添加运行输出。

<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>

这是第一个错误。应用程序应在JAR中的日志文件夹中保留log.txt。你可以在build.xml中看到(首先发布)我将内置的日志文件夹添加到JAR中,这很好,但是我的log.java代码中的路径显然会给我带来问题,因为它很难编码路径。所以我的问题是:如何在JAR文件中包含资源的路径。我知道要包含一个图像,我会做类似的事情:javax.swing.ImageIcon(getClass()。getResource(“/ images / pos_header_icon.png”)); 但我不确定如何访问文件位置......

1 个答案:

答案 0 :(得分:3)

  

应用程序应将 log.txt 保留在JAR内的日志文件夹中。

如上所述here,可以从JAR中提取文件,修改文件并恢复存档;但是改变当前加载的类正在运行的JAR是不切实际的。这对于正在进行的日志来说将是一个特殊问题。相反,请使用JFileChooser请求合适的路径并将其保存在应用程序的java.util.Preferences中。某些平台为example推荐了路径。