У меня старое java-приложение, в котором dcm4che используется в качестве библиотеки.Библиотека dcm4che - это не просто файл jar.Это папка, содержащая файлы JAR и другие папки с файлами свойств и классами в разных папках.Я использую WindowsXP и Java 1.6.
Когда мы запускаем наше приложение, нам нужно поместить эти папки, файлы JAR в путь к классам, выполнив что-то вроде этого:
set CLASSPATH=.;%PROJ_HOME%\classes;^
%THIRDPARTY_HOME%\dcm4che;^
%THIRDPARTY_HOME%\dcm4che\classes;^
%THIRDPARTY_HOME%\dcm4che\resources;^
Теперь я пытаюсьположить все их в один файл JAR, чтобы упростить контроль источников.Поэтому я создаю файл manifest.txt со следующим содержимым:
Class-Path: classes;resources;lib\dcm4che.jar;getopt.jar
Затем я создаю dcm4che.jar, запустив jar:
jar -cfm dcm4che.jar manifest.txt *
Создается файл dcm4che.jar.Я проверяю результат, извлекая все содержимое и проверяя файл манифеста, и мой путь к классам находится там:
Manifest-Version: 1.0
Class-Path: classes;resources;lib\dcm4che.jar;getopt.jar
Created-By: 1.6.0_25 (Sun Microsystems Inc.)
Затем я изменяю путь к классам приложения, чтобы он указывал на новый сгенерированный файл dcm4che.jar, и удаляю эти старые записи.
Когда я запускаю его, я получаю NoClassDefFoundError.Но этот класс находится в папке классов внутри нового созданного файла JAR.
Я что-то пропустил?