Загрузка класса в файл.jar, созданный программно
Вот моя цель: использовать SableCC для генерации нескольких парсеров / лексеров во время выполнения и загрузки их экземпляров для синтаксического анализа и лексирования.
Я решил, что мои шаги будут такими:
Генерировать
.java
файлы с использованием SableCC. Я думаю, что я сделал это, хорошо.Скомпилируйте
.java
подать в.class
файлы. Я сделал это используяJavaCompiler
, Я думаю, что это работало также хорошо.Поместите сгенерированные файлы в
.jar
файл, сохраняя структуру файла. Я сделал это, используя это в качестве шаблона. Изучение.jar
Использование файла JarBrowser показало, что файловая структура пакетов была сохранена. С его помощью каталог Jar выглядит так же, как обычный.jar
файл. Однако, используя JarBrowser, мой jar не отображается в каталоге CLASSPATH. Это заставляет меня верить, что мой.jar
файл не создается правильно.Загрузите
.jar
файл в экземплярURLClassLoader
, Я пытаюсь загрузить его с помощьюClass.forName()
но это не похоже на работу.
Всякий раз, когда я делаю шаг 4., я получаю java.lang.ClassNotFoundException
, У кого-нибудь есть идеи, почему это так?
1 ответ
Оказывается, у меня была косая черта в качестве префикса к имени файла / каталога. Я обрезал родительский каталог по имени файла, но не принял во внимание косую черту из родительского каталога, поэтому /dir1/file1
делалось вместо dir1/file1
, Похоже JAR
файлы привередливы.