1

我正在尝试构建烟灰。

我已经下载了 JastAddExtensions 的源代码,使用svn co https://svn.sable.mcgill.ca/abc/trunk/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 兼容的代码版本?

4

3 回答 3

2

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

于 2014-03-09T14:01:34.663 回答
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/

我希望这可以帮到你。

  • 杰夫
于 2014-05-15T23:37:22.963 回答
0

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

只需按照我前面提到的简单解决方案即可。确保将复制到 Ant 的 lib 目录的 jflex-1.5.1.jar 文件重命名为“JFlex.jar”。所有内容都在我给您的第一个链接的文档中。

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

  • 杰夫
于 2014-05-16T16:01:35.733 回答