当前位置: 首页 > 知识库问答 >
问题:

JFrame弹出窗口未显示在JAR中

东方旭东
2023-03-14

我有一个内置于Java的应用程序,当应用程序中按下某个按钮时,另一个jframe应该会弹出一条消息。我制作的ant文件将可运行的jar放入我的Eclipse项目中的一个文件夹中。当jar构建完成后,我在它诞生的文件夹中运行jar,它运行良好。我可以点击使弹出窗口显示的按钮,它确实显示了。

当我把罐子移出并说,放在桌面上时,问题就来了。然后运行jar启动应用程序,但是按下按钮什么也不做(没有弹出窗口)。

现在,我知道我之前有一些问题,包括一些图像资源,不得不使用getResources()等。我不明白为什么我必须做这样的事情,因为所有的“资源”只是在构建路径中指定的. class文件。我是说,应用程序应该做的就是创建一个jframe...

编辑:添加生成。xml编辑:精简版。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(). getResources("/图像/pos_header_icon.png"));但我不确定如何访问文件位置...

共有1个答案

百里京
2023-03-14

应用程序应保留日志。txt在日志文件夹中,在JAR中。

如本文所述,可以从JAR中提取文件、修改文件并恢复归档;但是改变当前加载的类运行的JAR是不实际的。对于正在进行的日志,这将是一个特殊的问题。相反,使用JFileChooser请求合适的路径,并将其保存在应用程序的java中。util。首选项。例如,有些平台有推荐的路径。

 类似资料:
  • 我读了关于JDialogsJOptionPane消息,但我还是无法让它工作。我有一个扩展JFrame的GUI类。我想做的就是在我的程序开始时有一个弹出窗口,通知用户一些事情。在我的主界面中,我创建了以下gui: 在那之后,我要展示橱窗。我在main方法中尝试了以下内容: 我还尝试将弹出窗口添加到GUI类中,如下所示 无论如何,我将如何使此窗口显示?我尝试过的每一种方法都编译了,但什么也没发生。 然

  • 问题内容: 如何将通过javascript 函数打开的弹出窗口居中显示在屏幕变量中心,以当前选定的屏幕分辨率为中心? 问题答案: 更新:它现在也可以在尚未超出屏幕宽度和高度的窗口上运行! 如果您使用双显示器,则窗口将水平居中,而不是垂直居中…使用此功能可以解决此问题。 用法示例:

  • 问题内容: 我正在尝试使用wunderground的api,Leaflet和Cloudmade将天气图标显示在地图标记中。我已经显示了文本和带有图标图像的变量,但是我不确定如何显示它。这是我的代码: 我尝试了一下但没有成功: 有什么建议? 问题答案: 标记的bindPopup方法仅将HTML内容作为字符串,因此您还需要在标记周围加上引号-类似于 应该为您工作。

  • 如何通过弹出窗口显示进度条,并在流程完成后自动关闭。这是我的密码。 进度表类: 这段代码的问题是 如果我使用. show(),显示弹出窗口很流畅,但没有进度条。 如果我使用. show And等待(),显示弹出窗口需要手动退出弹出窗口才能关闭但进度条显示。 对此有什么想法/想法吗?

  • 我试图从扩展服务的类中打开一个活动。当应用程序不在前台/未被使用时,我正在执行此任务。我可以在日志中看到,我的服务类故意触发了启动活动。标志\活动\新任务标志。但活动并未开始。但是,当应用程序处于前台/正在使用时,服务触发相同的活动时,活动就会打开。 经过几次搜索,我发现我需要在应用程序设置的“其他权限”部分中手动授予“在后台运行android时显示弹出窗口”的权限。 “在其他应用程序上显示”权限

  • 在过去的几天里,我一直在解决这个问题。尝试在