这是我的目标:使用SableCC在运行时生成多个解析器/词法分析器并加载它们的实例以进行解析和lexing。
所以我认为我的步骤是:
使用SableCC生成.java
个文件。我想我已经做到了,很好。
将.java
文件编译为.class
个文件。我是使用JavaCompiler
完成的。我认为这也很好。
将生成的文件放在.jar
文件中,保留文件结构。我使用this作为模板完成了此操作。使用JarBrowser检查.jar
文件表明已保留包的文件结构。使用它,Jar目录看起来与常规.jar
文件相同。但是,使用JarBrowser,我的jar不会出现在“CLASSPATH目录”下。这使我相信我的.jar
文件未正确创建。
将.jar
文件加载到URLClassLoader
的实例中。我正在尝试使用Class.forName()
加载它,但它似乎无法正常工作。
每当我执行第4步时,我都会得到java.lang.ClassNotFoundException
。有没有人对这是为什么有任何想法?
答案 0 :(得分:1)
事实证明我有一个斜杠作为文件/目录名称的前缀。我从文件名中删除了父目录,但没有考虑父目录中的尾部斜杠,因此/dir1/file1
正在完成而不是dir1/file1
。我猜JAR
文件很挑剔。