使用SDM从IncrementalGenerator读取Java源文件时出现问题

时间:2014-08-25 06:13:30

标签: gwt intellij-idea gwt-super-dev-mode

我正在编写一个小框架来处理异步调用。为了展示框架是如何工作的,我创建了一个展示区。在展示区内我想展示代码(来自Java源文件)以及代码执行时会发生什么。与GWT Showcase类似的东西。

为了显示代码,我使用IncrementalGenerator来读取java源文件,并为窗口小部件生成代码以代表代码。为此,我使用相同的代码来读取Java文件,就像我之前在其他项目中所做的那样。

看起来像是:

InputStream in = classLoader.getResourceAsStream(path);
if (in == null) {
  logger.log(TreeLogger.ERROR, "Resource not found: " + path);
  throw new UnableToCompleteException();
}

其中path是我想要读取的文件的相对路径。在SuperDevMode的情况下,InputStream始终为null。我也尝试使用旧的Generator类,但这也不起作用。在代码服务器启动时执行生成器时,看起来文件在类路径中不可用。

我用Dev-Mode-Plugin尝试了相同的代码,它运行正常!

那么,如何使用SuperDevMode访问IncrementalGenerator中项目的Java源文件?

我使用GWT 2.6.1,IntelliJ v13.1 Ultimate。

提前致谢

2 个答案:

答案 0 :(得分:1)

如果您使用-src参数向CodeServer提供源代码,那么它们就不会在类路径中;如果你期望它们在ClassLoader中,那么它们必须在类路径中(就像你将它们提供给GWT编译器或DevMode一样)。为了使您的生成器健壮,您应首先尝试ResourceOracle,然后回退到ClassLoader


仅供参考,一些内置生成器当前正从类路径加载,并且正在修改以从ResourceOracle加载以进行更好的渐进式编译:https://gwt-review.googlesource.com/8811

答案 1 :(得分:0)

我花了几个小时找到解决此问题的方法。

最后,它与GWT无关。我发现,-src参数对类路径的内容没有影响。在IntelliJ项目的编译器设置中,我找到了一个设置,它控制复制到类路径的资源类型。我删除了让IntelliJ将* .java文件复制到类路径的模式后,一切正常。

compiler resource pattern settingst looks

看起来无法使用IntelliJ中的-src参数控制类路径的输出。