Будучи новичком в Java и связывая программы с кодом, я смог успешно получить правильный вывод, запустив простой новый файл Java HelloWorld.Поэтому я считаю, что с java-файлом нет проблем с точки зрения компиляции его в файл класса или последующего его запуска, и что у меня есть все файлы, необходимые в java-комплекте для создания исполняемого файла.Однако я не уверен, правильно ли я использую launch4j, чтобы получить .exe, либо с настройкой .jar, либо с помощью процесса создания правильного файла .xml.
Приведенный ниже код показывает, что я получаю, когда пытаюсь поместить все в файл .jar, но я полагаю, что вывод является ошибкой, поскольку новый файл .jar не создается, пока я не выну "m"из" cvfm "в команде jar.Код действительно показывает что-то о добавляемом манифесте, независимо от того, когда это делается, но я все еще не получаю правильное приложение.Получив правильный вывод без launch4j, я прекратил воссоздание файлов .java и .class и просто сосредоточился на .xml, когда воссоздание файла .jar не достигло никакой разницы.Я попытался в launch4j оставить переменные среды пустыми на вкладке JRE или просто включил тот же путь системных переменных, с которым правильно работал java-файл в командной строке, и я также переключил проверку GUI на консоль в заголовкевкладка.Исследования также сказали мне искать файл manifest.mf, к которому я не думаю, что у меня есть этот точный файл в JDK, но, возможно, нашел что-то похожее в наборе (по крайней мере, при просмотре в типичных областях, таких как мусорное ведропапка).
C:\JavaTest>jar cvfm HelloWorld.jar HelloWorld.class
java.io.IOException: invalid header field
at java.util.jar.Attributes.read(Attributes.java:406)
at java.util.jar.Manifest.read(Manifest.java:234)
at java.util.jar.Manifest.<init>(Manifest.java:81)
at java.util.jar.Manifest.<init>(Manifest.java:73)
at sun.tools.jar.Main.run(Main.java:176)
at sun.tools.jar.Main.main(Main.java:1288)
C:\JavaTest>jar cvf HelloWorld.jar HelloWorld.class
added manifest
adding: HelloWorld.class(in = 426) (out= 289)(deflated 32%)
Я всегда получаю предупреждение о подписи при тестировании оболочки, но я не думаю, что это была проблема, как настоящая ошибка.Из-за природы многочисленных комбинаций трудно отследить, что послужило причиной различий в проблемах, но, похоже, что теперь, оставляя вкладку JRE пустой, за исключением наличия минимальной версии JRE, выдается ошибка «нет атрибута основного манифеста».из теста обертки в launch4j.Включение самого конца пути системной переменной в поле переменной среды делает то же самое.Прежде чем пытаться воссоздать .jar, переключение заголовка на консоль создаст .exe без ошибок, но либо открытие приложения либо ничего не сделает, либо выдает тот же вывод «без атрибута главного манифеста» в командной строке.Теперь я даже не могу использовать launch4j для тестирования оболочек, которые имеют заголовок на консоли, даже когда их сборка не приводит к ошибкам (но такая же ошибка происходит при открытии .exe).Я просто пытаюсь получить .exe, созданный из launch4j, чтобы обеспечить тот же вывод в командной строке, который я получаю при вводе "java HelloWorld" там.
Если я действительно правильно создаю .jar и правильно работаю с launch4j, пропустил ли я только что внесенный в список шаг, когда мне нужен какой-то файл манифеста для работы с launch4j?Если так, как я должен удостовериться, что я получил это правильно?Будет ли это видно в папке bin или полностью отдельно от JDK?Нужно ли мне переместить его в папку JavaTest, где находятся файлы java / class / jar / exe?Любая помощь действительно ценится.