构建Soot时,“找不到taskdef类JFlex.anttask.JFlexTask”

时间:2014-03-07 19:08:03

标签: java soot

我正在努力建立煤烟。

我使用svn co https://svn.sable.mcgill.ca/abc/trunk/JastAddExtensions/下载了JastAddExtensions的源代码,使用

检出了Soot的代码
  • 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兼容?

3 个答案:

答案 0 :(得分:1)

您可以在Soot邮件列表中更快地获得帮助。您不需要构建Soot的JastAdd部分。它预先构建在“generated”目录中。

答案 1 :(得分:0)

退房:

http://jflex.de/jflex_anttask.html

简单回答:您可能没有将JFlex jar复制到ant的库文件夹/目录。

如果这不能理顺你......更复杂的解决方案:找到soot Ant文件,可能在项目根目录中作为build.xml。

然后找到一个名为“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/

我希望这很有帮助。

  • 杰夫

答案 2 :(得分:0)

我看了一下soot存储库中的build.xml。问题在于目标jastadd。 JustAdd编译器使用Beaver作为其解析器生成器,它还需要JFlex作为它的扫描器生成器来处理.flex文件。

请按照我之前提到的简单解决方案。确保将复制到Ant的lib目录的jflex-1.5.1.jar文件重命名为&#34; JFlex.jar&#34;它是我给你的第一个链接的文件中的所有内容。

我这么晚才回答这个问题,因为我只是遇到了类似的问题,在Eclipse项目中让ant文件与JFlex一起使用。

  • 杰夫