【问题标题】:Launch a Scala Swing app on Windows without command window在没有命令窗口的 Windows 上启动 Scala Swing 应用程序
【发布时间】:2011-11-14 09:29:14
【问题描述】:

我在 .jar 文件中有一个用 Scala 编写的 Swing 应用程序。我使用命令scala "filepath\filename.jar" 创建了一个桌面快捷方式,它可以工作,但它首先会打开一个命令窗口,该窗口位于后台,直到我关闭应用程序。我想让它消失。

我相信对于 Java,您应该为此使用 javaw 而不是 java。我尝试将scala.bat 文件复制到一个名为scalaw.bat 的新文件中并将第24 行更改为

if exist "%JAVA_HOME%\bin\javaw.exe" set "_JAVACMD=%JAVA_HOME%\bin\javaw.exe" 

和第 28 行到

if "%_JAVACMD%"=="" set _JAVACMD=javaw

但是(更新桌面快捷方式后)我仍然会出现命令窗口。有什么想法吗?


更新:我尝试将 scala-library.jar 添加到清单中,但它不起作用,我猜是因为路径是相对于 jar 的根目录。其他选项似乎是将整个 scala-library jar 包含在 jar 文件 (Creating a jar file from a Scala file) 中,但我不认为这是一个解决方案。

或者我可以将 jar 解压到其组成的 .class 文件中并使用快捷方式

javaw.exe -cp "%SCALA_HOME%/lib/scala-library.jar";"filepath\\" packageName.className

但是……这涉及拆开罐子。

我发现的另一个半解决方法是编辑快捷方式,使其命令窗口最小化。


解决方案:根据 eugener 的回答,您需要使用 javaw 不带 -jar 选项,但指定 jar 文件,例如

javaw -cp "%SCALA_HOME%/lib/*";"C:/path/yourjar.jar" packageName.className

如果它是一个 Swing 应用程序并且您使用 scala-swing 库,您也需要包含它,或者使用上面的 * 通配符。

【问题讨论】:

    标签: java windows swing scala jar


    【解决方案1】:

    我建议直接使用 javaw 启动您的应用程序。由于 Scala 编译成与 Java 相同的字节码 - 你可以做到。不要忘记将标准 scala 库添加到类路径中

    【讨论】:

    • 但是如果你要启动jar,那么类路径必须已经在清单中了吗?
    • 您可以使用清单,也可以使用 -cp 参数来描述您的类路径,这在 IMO 中更灵活
    • 如果同时使用-cp和-jar,那么-cp设置会被忽略
    • 从快捷方式启动,使快捷方式指向javaw.exe,args指向你的jar、classpath等
    • 不...您必须通过指定主类和完整类路径(包括 scala-library.jar)作为普通 java 程序启动,不带 -jar 参数
    【解决方案2】:

    java command explanation中明确说明,关于-jar

    使用此选项时,JAR 文件是所有用户类的来源,其他用户类路径设置将被忽略。

    创建快捷方式 javaw.exe -cp "%SCALA_HOME%\lib\scala-library.jar";"%SCALA_HOME%\lib\scala-swing.jar";"C:/path/yourjar.jar" packageName.mainClassName 确实有效。

    因此,解决方案是包含库 + 带有 -cp 参数的打包目标代码,并且不要使用 -jar 开关。也作为问题中的解决方案给出。

    【讨论】:

      【解决方案3】:

      您可以尝试将您的bat 文件编译为exe(我使用了quick batch file compiler)。我相信这会阻止命令窗口的出现。我很长时间没有使用 Windows,但我记得它有时对我有帮助。

      【讨论】:

        猜你喜欢
        • 2023-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-27
        • 2020-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多