Создание работоспособного JAR-файла, который включает в себя файлы .exe через eclipse - PullRequest
2 голосов
/ 13 сентября 2010

Привет, ребята. Я просмотрел множество форумов онлайн, а также спросил многих профессиональных разработчиков java, но мне не удалось найти адекватную помощь в создании автономного исполняемого jar-файла финансового приложения, которое я в настоящее время заканчиваю.Приложение использует две внешние программы;программа преобразования файлов ImageMagick, называемая convert, и программа OCR, называемая gocr045.Я разработал это приложение с помощью eclipse и неоднократно пытался упаковать содержимое с помощью автоматизированного мастера создания jar-файлов eclipse.На моем компьютере и в моем приложении все работает хорошо, как и предполагалось, но по какой-то причине, когда приложение запускается на другом компьютере, оно компилируется и отображается графический интерфейс, но две внешние функции не работают.У меня были установлены эти функции на других машинах, но до сих пор единственным решением этой проблемы, которое я нашел, является ручное создание исполняемых jar-файлов на машинах с помощью Eclipse.К сожалению, это не сработает, потому что приложение должно быть коммерциализировано после его завершения, и я не могу начать установку eclipse, а затем устанавливать приложение для каждого пользователя, который его покупает.Я подозреваю, что это какая-то тривиальная проблема, и надеюсь, что такие специалисты по Java, как вы, смогут решить ее для меня в кратчайшие сроки.Возможно, это как-то связано с подписанием файла jar?

Спасибо, и я надеюсь вскоре получить от вас ответ,

Марк Коган KoganApps (www.koganapps.com)

Ответы [ 3 ]

0 голосов
/ 13 сентября 2010

Rafe - в конечном итоге цель состоит в том, чтобы приложение работало как на Windows, так и на Mac.Я буду использовать какое-то внешнее программное обеспечение для преобразования exe-файлов на Mac в файлы, которые будут работать на Mac OS X.Впоследствии я буду вызывать метод Runtime.exec () для этих преобразованных файлов

Майк - я подозревал, что это так, поскольку я не указываю прямой путь к внешним программам, а системный путь, вероятно, определяетсякогда баночка не работает на моем компьютере.Однако приложение состоит из JApplet, завернутого в JFrame;Могут ли ограничения безопасности для апплета иметь какое-либо отношение к проблемам, которые у меня возникают?И, конечно же, мои exe-файлы расположены за пределами jar во внешней папке, из которой они вызываются, потому что ClassLoader не может запускать внешние программы в том же файле jar, где он создается

Спасибо за помощь, ребятаСкоро свяжусь с вами по поводу моих результатов - надеюсь, сейчас все получится

0 голосов
/ 23 сентября 2010

Как вы сказали there is a JApplet wrapped in a JFrame, это может быть исключение безопасности. Обычно, когда у вас установлен JDK в вашей системе и вы используете eclipse, он забирает JRE из папки JDK. После того, как вы связали его как исполняемый файл jar и попытаетесь запустить его в другой системе, есть вероятность, что он наберет java.exe из c:\program files\java\jre\bin .. если это так, то ваше приложение не будет работать, если должным образом подписаны и предоставлены необходимые права доступа.

Итак, сделайте следующую проверку:

  1. какой JRE используется в вашей системе. будь то внутри JDK или c:\program files\java\jre\bin
  2. отметьте то же самое в других системах, где вы развернули свое приложение

Примечание : Я предположил, что вы установили все необходимые переменные пути.

Предложение

  1. Если у вас есть доступ к исходному коду ImageMagick и JOCR, тогда создайте из него dll и используйте JNA (https://jna.dev.java.net/) для их вызова.
  2. Используйте JPanel вместо JApplet
0 голосов
/ 13 сентября 2010

Были ли отдельные файлы exe добавлены в PATH на вашем компьютере?Если вы не указываете полный путь к исполняемому файлу при вызове метода Runtime.exec (), возможно, вы выбираете местоположение из системного пути.

Я бы

  1. Подтвердил, что exes находятся в известном месте относительно расположения фляги
  2. В методе Runtime.exec () используется это известное относительное местоположение
  3. Убедитесь, что exes не хранятся в банке (я не думаю, что это сработает, если они есть)

Я не думаю, что подпись как-то связана с этим.

...