Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JFrame弹出窗口未显示在JAR中_Java_Swing_Ant - Fatal编程技术网

Java JFrame弹出窗口未显示在JAR中

Java JFrame弹出窗口未显示在JAR中,java,swing,ant,Java,Swing,Ant,我有一个Java内置的应用程序,当在应用程序中按下某个按钮时,另一个jframe会弹出一条消息。我制作的ant文件将可运行jar放在Eclipse项目中的一个文件夹中。当jar构建好后,我在它诞生的文件夹中运行jar,它运行得很好。我可以点击使弹出窗口显示的按钮,它确实会显示出来 <manifest> <attribute name="Built-By" value="${user.name}"/> <

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

        <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启动应用程序,但按下按钮什么也不做(没有弹出窗口)

        <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>
现在,我知道我以前遇到过一些问题,包括一些图像资源,并且必须使用getResource()等。我不明白为什么我必须这样做,因为所有的“资源”都只是生成路径中指定的.class文件。我的意思是,所有的应用程序应该做的是创建一个jframe

        <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>
编辑:添加build.xml 编辑:精简build.xml——我认为问题在于JAR的构建

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

        <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\u header\u icon.png”); 但我不知道如何访问文件位置

        <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

        <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中提取文件、修改文件并恢复归档;但是改变当前加载的类运行的JAR是不实际的。对于正在进行的日志,这将是一个特殊的问题。相反,请使用请求合适的路径,并将其保存在应用程序的
java.util.Preferences
中。有些平台有推荐的路径,例如。

1)如果没有相关的代码,我不确定我们如何才能玩“猜虫子”游戏并获胜。2) 你甚至不应该出现在JFrames上。这就是JDialogs的作用。谢谢你的回复。我不想让你玩“猜猜虫子”。我想弄清楚这不起作用是否有明确的原因。我不相信在这种情况下发布代码对任何人都有帮助。另外,您能否提供不使用JFrame作为弹出窗口的原因?在本例中,它是一个用户将要填写的表单。当然,JFrame不依赖于底层窗口,这是一个糟糕的窗口行为。您很少希望启动两个单独的窗口应用程序,而是希望偶尔启动一个依赖于底层窗口的对话框窗口,这正是JDialog所做的。它还为您提供了灵活性和能力,可以是模态的,也可以是非模态的,这是一个单独的JFrame无法做到的。是的,您有一个bug,但没有相关的代码,最好是一个,我怀疑任何人都有很大的机会来帮助您。当然,我希望我错了。1)你的问题是什么?2) 请参见3)从命令行运行它(例如,
java-jar.jar
)并报告任何输出。感谢垃圾神。我做了类似的事情;我刚刚在“user.home”下创建了一个目录,在那里我将存储日志数据和数据库之类的数据,而不是访问JAR。我想这正是你的建议,尽管我没有给用户选择位置的选项。我会接受这个答案,因为我最初的问题与数据库、日志等的位置有关。
        <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>