在以编程方式创建的.jar文件中加载类

时间:2012-11-10 04:31:10

标签: java sablecc

这是我的目标:使用SableCC在运行时生成多个解析器/词法分析器并加载它们的实例以进行解析和lexing。

所以我认为我的步骤是:

  1. 使用SableCC生成.java个文件。我想我已经做到了,很好。

  2. .java文件编译为.class个文件。我是使用JavaCompiler完成的。我认为这也很好。

  3. 将生成的文件放在.jar文件中,保留文件结构。我使用this作为模板完成了此操作。使用JarBrowser检查.jar文件表明已保留包的文件结构。使用它,Jar目录看起来与常规.jar文件相同。但是,使用JarBrowser,我的jar不会出现在“CLASSPATH目录”下。这使我相信我的.jar文件未正确创建。

  4. .jar文件加载到URLClassLoader的实例中。我正在尝试使用Class.forName()加载它,但它似乎无法正常工作。

  5. 每当我执行第4步时,我都会得到java.lang.ClassNotFoundException。有没有人对这是为什么有任何想法?

1 个答案:

答案 0 :(得分:1)

事实证明我有一个斜杠作为文件/目录名称的前缀。我从文件名中删除了父目录,但没有考虑父目录中的尾部斜杠,因此/dir1/file1正在完成而不是dir1/file1。我猜JAR文件很挑剔。