2014-01-28 4 views
1

Я нахожусь в процессе написания инструмента командной строки, который должен работать на всех популярных платформах (Windows, Mac & Linux). Я думал написать его в golang, потому что он может генерировать статически скомпилированные двоичные файлы и работает на всех вышеперечисленных платформах. Прежде чем принять решение, мне нужно оценить Java и посмотреть, сможет ли он это сделать.Как создать приложение командной строки в Java?

Мне интересно, возможно ли создавать программы командной строки первого класса в Java? AFAIK, программа Java должна быть запущена как

java -cp classpath MyApp 

Теперь мне нужно, чтобы обернуть это в сценарий оболочки, чтобы улучшить опыт. Нечто подобное,

#!/bin/sh 
java -cp classpath MyApp [email protected] 

Теперь пользователь может сделать:

myapp --arg1 value --arg2 value 

Проблема такой подход не является кросс-платформенным. В Windows мне нужно написать пакетный файл для этого.

Я не уверен, что это правильный способ сделать на Java. Есть ли лучший способ справиться с этой проблемой?

+0

относящийся: http://stackoverflow.com/questions/2288440/how-to-create-a-java-application-which-can-be-run-by-a-click – jacquard

+0

http://stackoverflow.com/questions/147181/how-can-i-convert-my-java-program-to-an-exe-file – Mikhail

ответ

2

решение, которое вы отправили (файлы сценариев для конкретной платформы, вызывающие java), действительно проще и быстрее реализовать. если этого недостаточно для ваших нужд, есть несколько решений, которые обеспечивают лучшее удобство использования:

  1. executable jar files. в основном, указывая ваш основной класс в записи MANIFEST.MF, файл становится исполняемым, дважды щелкая на некоторых платформах (окна определенно, остальные не уверены). обратите внимание, что для этого требуется правильно установленная JRE на машине.
  2. служебные обертки. есть сторонние продукты, которые упакуют ваше приложение Java в собственный исполняемый файл и позволят вашему приложению «почувствовать» себя как родное приложение. наиболее часто используемой является tanuki service wrapper, но есть и другие (launch4j альтернатива с открытым исходным кодом, который соответствует вашим набор необходимых операционных систем)

EDIT - больше вариантов в родственный SO вопрос here

1

Для работы с аргументами командной строки удобно, вы можете использовать Apache CLI. Он разбирает аргументы и печатает список из них, если некоторые из них отсутствуют. В проектах java всегда есть файлы *.bat и *.sh как в папке bin. Что смущает вас в этом подходе? Посмотрите, например, на проекты Ant или Maven.

0

Возможно, я бы предложил использовать Maven, у него есть концепция под названием «maven spring shell», которая будет легко развиваться. Вам действительно нужно писать .bat и .sh для windows и linux, но это скорее тип конфигурации. Было бы легче упаковать. Следующая ссылка поможет вам developing spring shell applications

Смежные вопросы