Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
Eclipse 3.4 JDT's Выполнимый JAR экспортирует мастер.
В Eclipse 3.5, это было расширено. Теперь Вы можете, выбрал, как Вы хотите рассматривать свои файлы JAR, на которые ссылаются.
Или использование плагина блока Знатока (mvn assembly:assembly)
Существует инструмент, названный автобанка , который просканирует Ваш байт-код и скомпилирует .jar файл с классами, которые это находит, включая (импортированные) классы, на которые ссылаются.
не всегда работает с чем-то как Spring, тем не менее, где Вы определяете имена классов в конфигурации, и это загружается платформой.
Существует ProGuard, который не только упаковывает Ваши файлы JAR в один, но он может также оптимизировать, очистка или запутать Ваши файлы класса, делая получающийся файл JAR намного меньшим, чем сумма всех файлов JAR прежде.
я на самом деле попробовал ProGuard инструментом JRST, и это - как Вы сообщили. Я попытался разыскать проблему и нашел, что он коснулся ошибка в библиотеке ICU4J, на которую ссылается jrst. Проблема, что используемая версия ICU далеко устарела прямо сейчас. Таким образом, я заменил icu.jar
файл с версией 3.2 ICU4J. Теперь ProGuard находит набор других ошибок/предупреждений о incosistencies с библиотеками JRST.
Мое предположение - то, что ProGuard работает как ожидалось, но библиотеки jrst просто не последовательны. Я не знаю, можно ли сделать намного больше, чем разговор с его разработчиками, так как они должны проверить и обновить зависимости проекта.
Можно использовать JarJar, который будет использовать затенение пакета, чтобы удостовериться, что файл JAR не конфликтует с другими.
Если Вы Знаток пользователь, обычно плагин блока делает то, что Вы хотите, или потенциально плагин оттенка, и в некоторых случаях комбинация.
С плагином блока Вы помещаете файл манифеста в свой проект с любыми необходимыми настройками, хотя значения по умолчанию обычно довольно хороши. Здание тогда сделано с
mvn assembly:assembly
Или если у Вас есть более специальные вещи иметь дело с, одна из других целей. Все файлы JAR для включения, взяты преобразователем зависимости Знатока. При использовании плагина оттенка это обычно - часть цели установки, и в одном конкретном проекте я делаю теперь, я делаю
mvn install
mvn assembly:single
assembly:single
, цель состоит в том, чтобы работать вокруг пожизненных проблем, в этом случае в приложение Spring .
Попробовав несколько различных решений, я нашел один JAR самое легкое работать с и сумел суметь обойтись точно что: произведите единственный, исполняемый JAR, который содержит все, в чем я нуждаюсь.
один JAR использует пользовательский загрузчик класса, который может переместиться по вложенным ресурсам. Посмотрите на .bat файл в загрузке, он похож на org.codelutin.jrst. JRST в jrst-0.8.1.jar является основным классом, таким образом, Ваша декларация должна быть похожей на это:
Main-Class: com.simontuffs.onejar.Boot
One-Jar-Main-Class: org.codelutin.jrst.JRST
действительно прохладная вещь состоит в том, что один JAR обработает переходящий параметры командной строки для Вас. Путь к классу обрабатывается пользовательским загрузчиком класса, принимая все ресурсы, в которых Вы нуждаетесь, связываются в единственный JAR.
самый легкий способ использовать один JAR с муравьем; существует пользовательская задача Ant "с одной банкой", которая работает следующим образом (предполагающий, что Вашу декларацию называют "rst.mf"):
<target name="jar-rst">
<one-jar destfile="rst.jar" manifest="rst.mf">
<main jar="jrst-0.8.1.jar" />
<lib>
<fileset dir="${pathToJars}">
<include name="batik-util-1.6-1.jar" />
<include name="icu4j-2.6.1.jar" />
<include name="commons-collections-3.1.jar" />
<!-- Snip -->
</fileset>
</lib>
</one-jar>
</target>
Муравей zipfileset
делает задание
<jar id="files" jarfile="all.jar">
<zipfileset src="first.jar" includes="**/*.java **/*.class"/>
<zipfileset src="second.jar" includes="**/*.java **/*.class"/>
</jar>
One-JAR 0.97 только что был выпущен на http://one-jar.sourceforge.net , и он был расширен с поддержкой таких фреймворков, как ] Spring и Guice , которые могут создавать проблемы для других подходов. Он также обрабатывает инверсию загрузчика классов - где некоторые файлы JAR являются внешними по отношению к One-JAR (например, драйверы JDBC , которые могут не поставляться в комплекте).
One-JAR - это командная строка с плагинами Ant и Maven 2. Его также просто построить, просто используя инструмент «jar».
Я также могу порекомендовать Eclipse Jar Exporter (Runnable), о котором писал Ференс Хехлер: он проделал огромную работу, придумав простой подход к упаковке набора файлов JAR. Мы с ним работали над One-JAR, но Jar Exporter основан на другой кодовой базе.