Я создал приложение Java и должен подготовить его для работы на любой ОС.Для Windows я создал командный файл, подобный этому launch-win32.bat
:
@echo off
javaw -Xss1024k -Xmn256m -Xms512m -Xmx1024m -cp lib/*;bin/myjar-latest.jar my.package.MyMainClass
Для Linux я создал подобный скрипт оболочки launch-linux.sh
:
#!/bin/sh
java -Xss1024k -Xmn256m -Xms512m -Xmx1024m -cp lib/*:bin/myjar-latest.jar my.package.MyMainClass
Теперь я думал, что MacOSочень похоже на linux, поскольку оба они основаны на Unix, и я попросил друга с Mac попытаться запустить скрипт для запуска моего приложения.Но произошел сбой со следующим NoClassDefFoundError
:
Exception in thread "main" java.lang.NoClassDefFoundError: my/package/MyMainClass
Caused by: java.lang.ClassNotFoundException: my.package.MyMainClass
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Похоже, синтаксис команды java неверен, поскольку путь к классу неправильно добавлен в программу java.Теперь моя главная проблема заключается в следующем:
- MacOS официально не поддерживается Sun / Oracle, поэтому трудно найти хорошую документацию.(Мне нужна последняя версия JRE 7).
- Я никогда не использовал Mac или у меня нет возможности попробовать, как он может работать.
Итак, мои вопросы сейчас:
- Как запустить Java из командной строки в MacOS, каков правильный синтаксис?Или почему команда выше не работает?(Например, основное различие между Windows и Linux заключается в использовании точки с запятой
;
вместо разделителя двоеточия :
для пути к классам.) - Как должен называться файл сценария MacOS?
.sh
или .scpt
или .command
или в linux конец файла не имеет значения, если вы chmod +x
файл сценария?
Спасибо за любые подсказки.