.jar не работает при экспорте (путь к файлу)

Я пытаюсь объединить 2 простые программы. Я хочу сделать один файл .jar, и это код, который я написал: (project1.jar и project2.exe упакованы в этот .jar)

public class main
{
   public static void main(String[] args) 
   {
      try 
      {
         Runtime.getRuntime().exec("cmd /c project1.jar");
         Runtime.getRuntime().exec("cmd /c project2.exe");
      }  
      catch(Exception exce)
      { 
         /*handle exception*/
      }
   }
}

Все работает просто отлично, когда я запускаю проект в eclipse (оба файла выполняются, как я хочу). Но когда я экспортирую этот проект в .jar и запускаю его, ничего не происходит. Я думаю, что это как-то связано с путями к файлам, поскольку оно отлично работает при запуске в eclipse. Как это исправить?


person user1471327    schedule 21.06.2012    source источник
comment
Какие-то ошибки или что?   -  person Matjaz Muhic    schedule 21.06.2012
comment
Никаких ошибок, просто предупреждение после компиляции. Экспорт JAR завершен с предупреждениями. См. подробности для получения дополнительной информации. Экспортировано с предупреждениями о компиляции: merge/src/main.java   -  person user1471327    schedule 21.06.2012
comment
Как вы запускаете файл jar?   -  person Matjaz Muhic    schedule 21.06.2012
comment
Хм, обычно я просто дважды щелкаю по нему, если вы об этом спрашиваете.   -  person user1471327    schedule 21.06.2012
comment
Вы можете проверить One-Jar: one-jar.sourceforge.net . Это инструмент с открытым исходным кодом, который позволяет переупаковывать несколько файлов jar в один.   -  person John Snow    schedule 21.06.2012
comment
Только что попробовал запустить файл с помощью cmd, а не дважды щелкнуть по нему, и я получаю эту ошибку: нет основного атрибута манифеста в merged.jar. Значит, это как-то связано с manifest.mf?   -  person user1471327    schedule 21.06.2012


Ответы (1)


Если вы упаковываете оба этих jar-файла в третий jar-файл, это не сработает.
Чтобы ваш «cmd...» мог видеть и использовать эти два файла .jar, они должны существовать непосредственно на диске, а не быть упакованным внутри другого файла jar.

Чтобы решить эту проблему, вы можете:
- распространить 3 файла jar и использовать свой "основной" класс, как указано выше. Возможно, вам придется настроить «main», чтобы получить правильные пути jar. правильные классы точек входа, а не ссылки на файлы .jar.
или
- используйте onejar, как упомянул кто-то другой

person davidfrancis    schedule 21.06.2012