在没有命令窗口的Windows上启动Scala Swing应用程序

Lui*_*hys 10 java windows swing scala jar

我在一个.jar文件中用Scala编写了一个Swing应用程序.我用一个有效的命令创建了一个桌面快捷方式scala "filepath\filename.jar",除了它首先显示一个命令窗口,它位于后台,直到我关闭应用程序.我想让它消失.

我相信你应该使用Java javaw而不是java为了这个目的.我尝试将scala.bat文件复制到一个名为scalaw.batto 的新文件,并将第24行更改为

if exist "%JAVA_HOME%\bin\javaw.exe" set "_JAVACMD=%JAVA_HOME%\bin\javaw.exe" 
Run Code Online (Sandbox Code Playgroud)

和第28行到

if "%_JAVACMD%"=="" set _JAVACMD=javaw
Run Code Online (Sandbox Code Playgroud)

但是(更新桌面快捷方式后)我仍然会收到命令窗口.有任何想法吗?


更新:我尝试添加scala-library.jar到清单但它不起作用,我想因为路径是相对于jar的根.其他选项似乎包括jar文件中的整个scala-library jar (从Scala文件创建一个jar文件),但我不认为这是一个解决方案.

或者我可以将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
Run Code Online (Sandbox Code Playgroud)

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

Eug*_*kov 4

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