Запустите приложение Scala Swing в Windows без командной строки - PullRequest
10 голосов
/ 10 сентября 2011

У меня есть приложение Swing, написанное на Scala в файле .jar.Я сделал ярлык на рабочем столе с командой 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 внутри файла jar (Создание файла jar из файла Scala) , но я не считаю это решением.

Или я могу распаковать банку с составляющими ее .class файлами и использовать ярлык

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

, но ... который включает в себя распаковку банки.

Еще один найденный мной обходной путь - отредактировать ярлык так, чтобы окно команд работало в свернутом виде.


Решение : согласно ответу Евгения, вам нужноиспользовать javaw без с параметром -jar, но указав jar-файл, например

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

Если это приложение Swing и вы используете библиотеку scala-swing, которая вам понадобитсячтобы включить это, или используйте подстановочный знак *, как указано выше.

Ответы [ 3 ]

4 голосов
/ 10 сентября 2011

Я бы посоветовал запустить ваше приложение напрямую, используя javaw .Поскольку Scala компилируется в тот же байт-код, что и Java, вы можете это сделать.Не забудьте добавить стандартные библиотеки scala в путь к классам

1 голос
/ 23 мая 2014

Это четко указано в объяснении команды java , о -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 переключатель.Также дано в качестве решения в вопросе.

0 голосов
/ 10 сентября 2011

Вы можете попробовать скомпилировать файл bat в exe (я использовал quick batch file compiler). Я считаю, что это препятствует появлению командного окна. Я долгое время не пользовался Windows, но помню, иногда это мне помогало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...