0

AutoBean で @Category(class) を機能させようとしています。

私は単純な工場を持っています

import com.google.web.bindery.autobean.shared.AutoBean;
import com.google.web.bindery.autobean.shared.AutoBeanFactory.Category;

@Category(TestCategory.class)
public interface TestFactory {
    AutoBean<Test> test();
}

そして Category クラス

com.google.web.bindery.autobean.shared.AutoBean をインポートします。

public class TestCategory {
    public static String asString(AutoBean<Test> instance) {
        return "as a string";
    }
}

そしてテストインターフェース。

public interface Test {
    String getValue();
    void setValue(String value);
    String asString();
}

3つすべてが同じパッケージに入っています。

GWT プロジェクトをコンパイルしようとすると、次のエラー メッセージが表示されます。

 [java]    Resolving com.mycompany.my_gwt_project.client.test.TestFactory
 [java]       Found type 'com.mycompany.my_gwt_project.client.test.TestFactory'
 [java]          [ERROR] Annotation error: cannot resolve com.mycompany.my_gwt_project.client.test.TestCategory
 [java]    java.lang.ClassNotFoundException: com.mycompany.my_gwt_project.client.test.TestCategory
 [java]     at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
 [java]     at java.security.AccessController.doPrivileged(Native Method)
 [java]     at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
 [java]     at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
 [java]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
 [java]     at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
 [java]     at java.lang.Class.forName0(Native Method)
 [java]     at java.lang.Class.forName(Class.java:249)
 [java]     at com.google.gwt.dev.javac.TypeOracleMediator.resolveAnnotationValue(TypeOracleMediator.java:750)
 [java]     at com.google.gwt.dev.javac.TypeOracleMediator.resolveAnnotationValue(TypeOracleMediator.java:689)
 [java]     at com.google.gwt.dev.javac.TypeOracleMediator.createAnnotation(TypeOracleMediator.java:498)
 [java]     at com.google.gwt.dev.javac.TypeOracleMediator.resolveAnnotation(TypeOracleMediator.java:648)
 [java]     at com.google.gwt.dev.javac.TypeOracleMediator.resolveAnnotations(TypeOracleMediator.java:663)
 [java]     at com.google.gwt.dev.javac.TypeOracleMediator.resolveClass(TypeOracleMediator.java:809)
 [java]     at com.google.gwt.dev.javac.TypeOracleMediator.addNewTypes(TypeOracleMediator.java:439)
 [java]     at com.google.gwt.dev.javac.TypeOracleMediatorFromSource.addNewUnits(TypeOracleMediatorFromSource.java:52)
 [java]     at com.google.gwt.dev.javac.CompilationState.assimilateUnits(CompilationState.java:164)
 [java]     at com.google.gwt.dev.javac.CompilationState.<init>(CompilationState.java:82)
 [java]     at com.google.gwt.dev.javac.CompilationStateBuilder.doBuildFrom(CompilationStateBuilder.java:466)
 [java]     at com.google.gwt.dev.javac.CompilationStateBuilder.buildFrom(CompilationStateBuilder.java:388)
 [java]     at com.google.gwt.dev.cfg.ModuleDef.getCompilationState(ModuleDef.java:373)
 [java]     at com.google.gwt.dev.Precompile.precompile(Precompile.java:246)
 [java]     at com.google.gwt.dev.Precompile.precompile(Precompile.java:229)
 [java]     at com.google.gwt.dev.Precompile.precompile(Precompile.java:141)
 [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] Annotation error: expected class java.lang.Class, got null

誰かが手がかりを持っていますか?

4

1 に答える 1

0

javacクラスを作成し、それらを DevMode のクラスパスに含める必要があります。

残念ながら、これは GWT の現在の設計の既知の制限です: https://code.google.com/p/google-web-toolkit/issues/detail?id=7602

于 2013-04-18T13:02:52.927 に答える