1

すすを作ろうとしています。

を使用して JastAddExtensions のソース コードをダウンロードし、使用して Sootsvn co https://svn.sable.mcgill.ca/abc/trunk/JastAddExtensions/のコードをチェックアウトしました。

  • git remote add soot https://github.com/Sable/soot.git
  • git pull soot develop.

次に、Ant を使用して Soot をビルドしようとしたところ、次のエラー メッセージが表示されました。

D:\dev\ro-01\soot\build.xml:102: The following error occurred while executing this line:
D:\dev\ro-01\JastAddExtensions\SootJastAddJ\build.xml:18: taskdef class JFlex.anttask.JFlexTask cannot be found
 using the classloader AntClassLoader[]

このエラーを修正するにはどうすればよいですか? JastAddExtensions\SootJastAddJ現在のバージョンの Soot と互換性のあるバージョンの のコードはどこでダウンロードできますか?

4

3 に答える 3

2

Soot メーリング リストでより迅速にヘルプを得ることができます。Soot の JastAdd 部分をビルドする必要はありません。「生成された」ディレクトリに事前に構築されています。

于 2014-03-09T14:01:34.663 に答える
0

チェックアウト:

http://jflex.de/jflex_anttask.html

簡単な答え: JFlex jar を ant のライブラリ フォルダ/ディレクトリにコピーしていない可能性があります。

それでも問題が解決しない場合は… より複雑な解決策: プロジェクトのルート ディレクトリにある、おそらく build.xml にある soot Ant ファイルを探します。

次に、おそらく次のような「jflex」という名前のタスク定義を見つけます。

<taskdef classname="jflex.anttask.JFlexTask" name="jflex" />

次のように変更します。

<taskdef 
  name="jflex" 
  classname="jflex.anttask.JFlexTask"
  classpath="${compiler_tools_path}${jflex_jar_name}"
/>

最初に、他のプロパティを使用して、作成したディレクトリ/フォルダーの場所で新しいプロパティを作成し、最新の JFlex jar をコピーします。

<property
name="compiler_tools_path"
    value="/Library/CompilerTools/"
/>

これは、これを Mac に保存するためのディレクトリ/フォルダーを作成するのに適した場所です。Windows および Unix、外部にインストールされた jar が格納されている場所。

<property
name="jflex_jar_name"
value="jflex-1.5.1.jar"
/>

最近の JFlex jar ビルドの例。チェックアウト:

http://jflex.de/

これがお役に立てば幸いです。

  • ジェフ
于 2014-05-15T23:37:22.963 に答える
0

soot リポジトリの build.xml を調べました。問題は、ターゲットの jastadd にあります。JustAdd コンパイラは、パーサー ジェネレーターとして Beaver を使用します。また、.flex ファイルを処理するためのスキャナー ジェネレーターとして JFlex を必要とします。

前述の簡単なソリューションに従ってください。Ant の lib ディレクトリにコピーする jflex-1.5.1.jar ファイルの名前を「JFlex.jar」に変更してください。最初のリンク先のドキュメントにすべて記載されています。

EclipseプロジェクトでantファイルをJFlexで動作させる際に同様の問題に遭遇しただけなので、この問題への回答は非常に遅くなりました。

  • ジェフ
于 2014-05-16T16:01:35.733 に答える