我在创建Maven项目并添加依赖项后尝试学习PlayN 到pom.xml
enter code here
<dependency>
<groupId>com.threerings</groupId>
<artifactId>tripleplay</artifactId>
<version>1.0</version>
</dependency>
我使用三重播放库中的类来显示菜单系统 在Showcase演示项目中。当作为Java应用程序运行项目都可以, 但是当作为html应用程序运行时,我得到了像这样的错误
ant.bat run-html
....
[java] com.google.gwt.dev.jjs.InternalCompilerException: Failed to get JNode
[java] at com.google.gwt.dev.jjs.impl.TypeMap.get(TypeMap.java:140)
[java] at com.google.gwt.dev.jjs.impl.TypeMap.get(TypeMap.java:71)
[java] at com.google.gwt.dev.jjs.impl.BuildTypeMap.getType(BuildTypeMap.java:730)
[java] at com.google.gwt.dev.jjs.impl.BuildTypeMap.createField(BuildTypeMap.java:570)
[java] at com.google.gwt.dev.jjs.impl.BuildTypeMap.access$300(BuildTypeMap.java:99)
[java] at com.google.gwt.dev.jjs.impl.BuildTypeMap$BuildDeclMapVisitor.visit(BuildTypeMap.java:180)
[java] at org.eclipse.jdt.internal.compiler.ast.FieldDeclaration.traverse(FieldDeclaration.java:285)
[java] at org.eclipse.jdt.internal.compiler.ast.TypeDeclaration.traverse(TypeDeclaration.java:1232)
[java] at org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration.traverse(CompilationUnitDeclaration.java:687)
[java] at com.google.gwt.dev.jjs.impl.BuildTypeMap.createPeersForNonTypeDecls(BuildTypeMap.java:637)
[java] at com.google.gwt.dev.jjs.impl.BuildTypeMap.exec(BuildTypeMap.java:514)
[java] at com.google.gwt.dev.jjs.impl.BuildTypeMap.exec(BuildTypeMap.java:523)
[java] at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.precompile(JavaToJavaScriptCompiler.java:599)
[java] at com.google.gwt.dev.jjs.JavaScriptCompiler.precompile(JavaScriptCompiler.java:33)
[java] at com.google.gwt.dev.Precompile.precompile(Precompile.java:284)
[java] at com.google.gwt.dev.Precompile.precompile(Precompile.java:233)
[java] at com.google.gwt.dev.Precompile.precompile(Precompile.java:145)
[java] at com.google.gwt.dev.Compiler.run(Compiler.java:232)
[java] at com.google.gwt.dev.Compiler.run(Compiler.java:198)
[java] at com.google.gwt.dev.Compiler$1.run(Compiler.java:170)
[java] at com.google.gwt.dev.CompileTaskRunner.doRun(CompileTaskRunner.java:88)
[java] at com.google.gwt.dev.CompileTaskRunner.runWithAppropriateLogger(CompileTaskRunner.java:82)
[java] at com.google.gwt.dev.Compiler.main(Compiler.java:177)
[java] [ERROR] <no source info>: public class tripleplay.ui.Interface
[java] extends java.lang.Object
[java] /* fields */
[java] public final [unresolved] playn.core.Pointer.Listener plistener
[java] public final [unresolved] playn.core.Keyboard.Listener klistener
[java] protected final [unresolved] playn.core.Pointer.Listener _delegate
[java] protected final [unresolved] Unresolved type react.Value<playn.core.Keyboard.Listener> _focused
[java] protected final [unresolved] List<Unresolved type tripleplay.ui.Root> _roots
[java] protected final [unresolved] List<Unresolved type tripleplay.ui.Root> _dispatch
[java] protected final [unresolved] List<Unresolved type java.lang.Runnable> _actions
怎么了?感谢
答案 0 :(得分:2)
奇怪的是,GWT编译器会崩溃,而不是生成正常的错误消息。但看起来您需要将Tripleplay GWT模块添加到您的GWT项目中。
在你的游戏中,你将拥有一个名为:
的文件 mygame/html/src/main/java/mypackage/mygame/MyGame.gwt.xml
在该文件中,您需要添加:
<inherits name="tripleplay.TriplePlay"/>
这将让GWT知道在将内容编译为JavaScript时它可以而且应该使用TriplePlay源代码。