0

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

所以我想我的步骤是:

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

  2. .java将文件编译为.class文件。我使用JavaCompiler. 我认为这也很好。

  3. 将生成的文件放在一个.jar文件中,保留文件结构。我用这个作为模板来做这个。.jar使用JarBrowser检查文件显示包的文件结构被保留。使用它,Jar Catalog 看起来与常规.jar文件相同。但是,使用 JarBrowser,我的 jar 不会显示在“CLASSPATH 目录”下。这让我相信我的.jar文件没有正确创建。

  4. .jar将文件加载到URLClassLoader. 我正在尝试使用它来加载它,Class.forName()但它似乎不起作用。

每当我执行第 4 步时,我都会得到一个java.lang.ClassNotFoundException. 有没有人知道为什么会这样?

4

1 回答 1

1

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

于 2012-11-10T19:10:00.840 回答