Нужны ли для работы файла .jar все классы, установленные на машине? Например: если я когда-либо распространю программу в виде файла .jar, нужно ли мне также установить все мои файлы .class на машине пользователя? Если да, есть ли способ распространить Java-программу в виде одного файла (например, исполняемого файла)?
Нужны ли для работы файла .jar все классы, установленные на машине?
Ответы (3)
Классы скомпилированы в файл .jar, поэтому нет необходимости устанавливать их на каждой машине. И да, есть способ распространять исполняемый файл .jar.
Error: Could not find or load main class Server Caused by: java.lang.ClassNotFoundException: Server
Каждый раз, когда я запускаю файл .jar с классом Server в другой папке?
- person Serket; 31.08.2020
java.lang.ClassNotFoundException
, скорее всего, класс отсутствует в вашем файле .classpath.
- person scaldings; 31.08.2020
Это зависит от того, как вы построили банку. Классы в вашем банке могут зависеть от других классов в вашей банке и / или от классов в других банках, установленных в вашей системе. В последнем случае они, вероятно, не будут работать, если вы раздадите банку другим пользователям.
Вам необходимо убедиться, что создаваемый и распространяемый вами jar-файл содержит все используемые вами зависимости. Я слышал, что здесь может помочь Maven.
На самом деле файл .jar - это нормально. Вы можете выполнить это с помощью java -jar jarFile
.
Содержит ли ваш jar все классы для запуска jar, зависит от того, как вы его создали.
Вы можете упаковать все дененденции в jar, который называется толстым jar, или вы можете просто объявить свои зависимости и просто упаковать свой собственный класс в банку с инструментами сборки, такими как maven или gradle. Позже пользователь может загрузить зависимость с помощью того же инструмента сборки. Обычно более поздний способ лучше.
Main-Class
- person René Link; 31.08.2020
ClassNotFoundException
? Есть ли эта справка в качестве отправной точки? В противном случае могут потребоваться дополнительные сведения о том, как вы создаете и запускаете свою программу. - person andrewjames   schedule 31.08.2020