0

我正在编写一个小框架来处理异步调用。为了展示框架的工作原理,我创建了一个展示。在展示中,我想展示代码(来自 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 始终为空。我也尝试使用旧的 Generator 类,但这也不起作用。当代码服务器启动时,执行生成器时,文件在类路径中似乎不可用。

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

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

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

提前致谢

4

2 回答 2

1

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


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

于 2014-08-25T09:03:42.340 回答
0

我又花了几个小时来寻找解决这个问题的方法。

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

编译器资源模式设置看起来

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

于 2014-08-26T05:29:34.913 回答