LINUX.ORG.RU

java, «пускалка»


0

0

Более-менее сложная программа на java состоит из множества jar-файлов. Ещё иногда в ней бывает несколько Main-классов и она требует задания переменных через -D.
В принципе можно писать .sh и .bat/.cmd файлы. Проблема очевидна, их надо синхронизировать между собой.

Можно написать относительно универсальный .sh файл, который будет сканировать каталог lib при запуске, создавать CLASSPATH и запускать. Создать на вендовом недоязыке bat-файлов аналог я лично не осилил. А кроссплатформенность нужна.

Хотелось бы следующего: пишем конфиг примерно такого вида:

cp1 dist/program.jar
cpjars lib
def my.host = 127.0.0.1
main com.company.project.Main

и запускаем программку. Она делает нужный classpath (т.е. в котором будет dist/program.jar и все jar-ки каталога lib) и запускает java-у.

В принципе такая программа пишется на перле за 10 минут, но проблема остаётся. На венде перла нет. Если ставить, то проще сразу bash юзать.
В идеале это должна быть маленькая программа на сях, ни от чего не зависящая, и делающая то, что я описал.

Ещё, кстати, классно было бы иметь профили, т.е. возможность гибко менять конфигурацию. Что то вроде

[test]
def my.host = test.lan
[production]
def my.host = production.lan

★★★★★

Java же такой классный *кроссплатформенный* язык. (гы-гы)
Напиши пускалку на java. :)

max_posedon
()

А если специально для "пускалки" создать на-лету еще один jar-файл, где явно прописать главный Main-класс? Внутрь можно положить какой-нибудь пустой класс. Еще вариант - саму пускалку можно написать на java, передавать ей параметры, а она уж потом сама разберется, что подключать и как. Так будет кросс-платформенно. Другими словами, искать решение через саму java :)

dave ★★★★★
()

>На венде перла нет

Собери экзешник. ActivePerl вроде такой коленкор позволяет

W0wik
()

> Напиши пускалку на java. :)

Запускать одну виртуальную машину чтобы запустить другую — оверхед.

>> На венде перла нет > Собери экзешник. ActivePerl вроде такой коленкор позволяет

Интересно. А он туда весь перл на засунет, как в линуксе? Никогда не юзал его.

В принципе я на сях уже почти дописал, наверное на этом остановлюсь.

Legioner ★★★★★
() автор топика
Ответ на: комментарий от Legioner

> Запускать одну виртуальную машину чтобы запустить другую — оверхед.

По-моему можно ограничиться одной виртуальной машиной. Кажется, java позволяет переопределить даже загрузчик класса. Но похоже, что вопрос уже почти решен.

dave ★★★★★
()
Ответ на: комментарий от dave

Хотя с переменными окружения могли бы возникнуть сложности... Ну, да ладно. Если решение уже найдено, то это есть гуд.

dave ★★★★★
()
Ответ на: комментарий от dave

Да, позволяет, но я с ними почти не работал, и опасаюсь косяков, которые могут неожиданно вылезти где-нибудь совершенно в другом месте. Да и предпочитаю простые решения, если честно.

Legioner ★★★★★
() автор топика

Я однажды в подобной ситуации "забил" и написал два множества скриптов (sh/cmd). С души воротит, но так всем проще.

svu ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.