这是我当前的设置
src/
com
acme
Model.gwt.xml
model
token
Token.java
...
test/
super
com
acme
jre
java
lang
CloneNotSupportedException.java (introducing class since GWT doesnt support it)
google
gwt
emul
java
lang
Character.java (added a method that GWT doesn't support)
Model.gwt.xml中的超级源路径
是
super-source path="jre"
编译时,编译器会在我的模拟类中抱怨错误
令人困惑的...... Token.java
... isWhitespace(char)未定义 类型字符...没有源代码 可用于类型 java.lang.CloneNotSupportedException;
它似乎没有拿起我模仿的东西。
在GWT文档之后我还尝试将“jre”文件夹放到src / com / acme /中,即字面上在同一级别有模块xml。但是没有用。
我在帖子中读到google的emul被自己拾起,因此我将jre和google的东西都放在了super中,但只包含了“jre”作为超级源代码
我正在使用gwt-maven-plugin进行编译,我的pom.xml摘录是
我在这里做错了什么?
答案 0 :(得分:2)
要在eclipse中摆脱来自super source的编译错误,只需修改你的java构建路径;在您拥有模拟代码的任何源文件夹中,放入一个排除过滤器,例如**/jre/**/*.java
或**/emul/**/*.java
。这将保持ide的快乐,而gwt开发者模式和编译将在它的类路径上都有模拟的超级源。
哦,我注意到你正在使用maven,而不是eclipse。只需在maven-source-plugin中排除您的模拟包。这样,maven编译器永远不会看到模拟文件,并且gwt:goals的源包仍然是完整的。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<configuration>
<excludes>
<value>**/emul/**/*.java</value>
</excludes>
</configuration>
</plugin>
</plugins>
要确保上述排除过滤器在Maven项目更新/导入之间保持不变,请在Maven编译器插件配置中添加<excludes>
:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<excludes>
<value>**/emul/**/*.java</value>
</excludes>
</configuration>
</plugin>
答案 1 :(得分:0)
它无法工作的原因是因为您可能仍在开发人员模式下运行。上面完成的代码应该在GWT编译和部署应用程序时起作用。