Я пытаюсь использовать one-jar для создания одного файла jar, который содержит файл jar-файла clojure и файл класса java [duplicate]

A NullReferenceException бросается, когда мы пытаемся получить доступ к свойствам нулевого объекта или когда значение строки становится пустым, и мы пытаемся получить доступ к строковым методам.

Например:

  1. При использовании метода string пустой строки:
    string str = string.Empty;
    str.ToLower(); // throw null reference exception
    
  2. Когда свойство нулевого объекта доступно:
    Public Class Person {
        public string Name { get; set; }
    }
    Person objPerson;
    objPerson.Name  /// throw Null refernce Exception 
    
5
задан Pojo 28 November 2011 в 21:10
поделиться

6 ответов

Вы можете извлечь все JAR и объединить их в один общий JAR. Есть задачи ANT и плагины Maven, доступные для этого. Кроме того, если приложение правильно написано, нет ничего, что помешало бы вам помещать медиа-файлы и другие ресурсы в JAR. Вам просто нужно убедиться, что эти ресурсы « загружены из пути к классам », а не загружаются из текущего рабочего каталога.

2
ответ дан ziesemer 24 August 2018 в 19:48
поделиться

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

Лучший способ развертывания богатого клиентского приложения. использует Java Web Start . Конечный пользователь никогда не увидит Jar, и ему может быть предоставлен рабочий стол или пункт меню для запуска приложения.

0
ответ дан Community 24 August 2018 в 19:48
поделиться

Если вы используете Maven, вы можете оценить onejar-maven-plugin . Одно из основных преимуществ заключается в том, что все ваши банки-иждивенцы остаются в баночках, а ваш код находится в собственной банке. Все эти банки помещаются в большую банку, которая становится исполняемой, что позволяет избежать некоторых возможных проблем с классом. Прочтите руководство по использованию и это сообщение в блоге для получения дополнительной информации.

0
ответ дан matsev 24 August 2018 в 19:48
поделиться

Apache Maven плюс плагин shade будет делать именно то, что вам нужно.

Проверьте «Shade Plugin», где добавлен Main-Class раздел MANIFEST.MF "здесь http://maven.apache.org/plugins/maven-shade-plugin/examples.html

3
ответ дан mschonaker 24 August 2018 в 19:48
поделиться

Если вы используете плагин сборки для maven, вы можете загрузить его зависимостями, построить модули и создать исполняемый банку.

1
ответ дан Peter Lawrey 24 August 2018 в 19:48
поделиться

Если вы создаете исполняемую банку и имеете другие банки, которые должны быть доступны в пути к классам, в файле MANIFEST.MF в банке есть строка Class-Path: список записей (включая банки и каталоги) для включения в пути к классам при запуске основного класса.

Обычно я использую мою среду IDE или ant для создания таких исполняемых банок и устанавливаю заголовок Class-Path:

. Кстати, к сделайте исполняемый файл jar, установите строку Main-Class: в файле MANIFEST.MF.

Вот пример из исполняемого jar, который я создаю:

Main-Class: com.example.app.MyAppCLI
Class-Path: log4j.jar driver.jar libraries.jar

И вот соответствующая цель муравья, чтобы построить это:

<target name="exejar">
  <jar destfile="myapp.jar"
       basedir="bin"
       include="**/app/*.class">
    <manifest>
      <attribute name="Main-Class" value="com.example.app.MyAppCLI"/>
      <attribute name="Class-Path" value="log4j.jar driver.jar libraries.jar"/>
    </manifest>
  </jar>
</target>

Если вы будете использовать инструмент, подобный муравьям, для создания исполняемых банок, это сделает процесс более простым для повторения и также будет обрабатывать странные случаи края для вы, как то, что происходит, когда строка заголовка в MANIFEST.MF становится слишком длинной.

1
ответ дан skiphoppy 24 August 2018 в 19:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: