Загрузка класса в файл.jar, созданный программно

Вот моя цель: использовать SableCC для генерации нескольких парсеров / лексеров во время выполнения и загрузки их экземпляров для синтаксического анализа и лексирования.

Я решил, что мои шаги будут такими:

  1. Генерировать .java файлы с использованием SableCC. Я думаю, что я сделал это, хорошо.

  2. Скомпилируйте .java подать в .class файлы. Я сделал это используя JavaCompiler, Я думаю, что это работало также хорошо.

  3. Поместите сгенерированные файлы в .jar файл, сохраняя структуру файла. Я сделал это, используя это в качестве шаблона. Изучение .jar Использование файла JarBrowser показало, что файловая структура пакетов была сохранена. С его помощью каталог Jar выглядит так же, как обычный .jar файл. Однако, используя JarBrowser, мой jar не отображается в каталоге CLASSPATH. Это заставляет меня верить, что мой .jar файл не создается правильно.

  4. Загрузите .jar файл в экземпляр URLClassLoader, Я пытаюсь загрузить его с помощью Class.forName() но это не похоже на работу.

Всякий раз, когда я делаю шаг 4., я получаю java.lang.ClassNotFoundException, У кого-нибудь есть идеи, почему это так?

1 ответ

Решение

Оказывается, у меня была косая черта в качестве префикса к имени файла / каталога. Я обрезал родительский каталог по имени файла, но не принял во внимание косую черту из родительского каталога, поэтому /dir1/file1 делалось вместо dir1/file1, Похоже JAR файлы привередливы.

Другие вопросы по тегам