0

私の目標は次のとおりです。SableCCを使用して、実行時に複数のパーサー/レクサーを生成し、それらのインスタンスをロードして解析とレクシングを行います。

だから私は自分のステップが次のようになると考えました:

  1. .javaSableCCを使用してファイルを生成します。私はこれをやったと思います。

  2. .javaファイルをファイルにコンパイルし.classます。私はこれを使用して行いJavaCompilerました。これもうまくいったと思います。

  3. 生成されたファイルをファイルに入れ、.jarファイル構造を保持します。これをテンプレートとして使用して行いました。JarBrowser.jarを使用してファイルを調べると、パッケージのファイル構造が保持されていることがわかりました。これを使用すると、Jarカタログは通常のファイルと同じように見えます。ただし、JarBrowserを使用すると、jarが「CLASSPATHカタログ」の下に表示されません。これにより、ファイルが正しく作成されていないと思います。.jar.jar

  4. .jarファイルをのインスタンスにロードしますURLClassLoader。を使用してロードしようとしていますClass.forName()が、機能していないようです。

手順4を実行するたびに、が表示されjava.lang.ClassNotFoundExceptionます。これがなぜであるかについて誰かが何か考えを持っていますか?

4

1 に答える 1

1

ファイル/ディレクトリ名の接頭辞としてスラッシュがあったことがわかりました。ファイル名から親ディレクトリを切り捨てていましたが、親ディレクトリの末尾のスラッシュを考慮していなかったため/dir1/file1dir1/file1. JARファイルはうるさいと思います。

于 2012-11-10T19:10:00.840 に答える