2017-10-06 19 views
0

Je joue avec Gwt et je veux essayer JsInterop. J'ai défini un POJO simple annoté avec @JsType. L'idée voit le type d'annotation dans le projet, mais la construction échoue avec l'erreur que la classe d'annotation n'est pas définie.Comment utiliser JsInterop dans GWT

GWT version 2.8.1. Le plugin GWT maven est gwt-maven-plugin 1.0-rc-8.

Options du compilateur sont:

<compilerArgs> 
    <compileArg>-XjsInteropMode</compileArg> 
    <compileArg>-generateJsInteropExports</compileArg> 
    <compileArg>JS</compileArg> 
    </compilerArgs> 


[ERROR] COMPILATION ERROR : 
[INFO] ------------------------------------------------------------- 
[ERROR] /home/egnyte/demo/gwt/StockWatcherSample-master/src/main/java/de/google/gwt/stockwatcher/client/sub/Mesage.java:[5,37] package com.google.gwt.core.client.js does not exist 
[ERROR] /home/egnyte/demo/gwt/StockWatcherSample-master/src/main/java/de/google/gwt/stockwatcher/client/sub/Mesage.java:[7,2] cannot find symbol 
    symbol: class JsType 
[INFO] 2 errors 
[INFO] ------------------------------------------------------------- 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 3.119 s 
[INFO] Finished at: 2017-10-06T16:09:52+02:00 
[INFO] Final Memory: 21M/258M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:compile (default-compile) on project stockwatcher: Compilation failure: Compilation failure: 
[ERROR] /home/egnyte/demo/gwt/StockWatcherSample-master/src/main/java/de/google/gwt/stockwatcher/client/sub/Mesage.java:[5,37] package com.google.gwt.core.client.js does not exist 
[ERROR] /home/egnyte/demo/gwt/StockWatcherSample-master/src/main/java/de/google/gwt/stockwatcher/client/sub/Mesage.java:[7,2] cannot find symbol 
[ERROR] symbol: class JsType 
+1

En toute discrétion hors sujet (cette question n'a rien à voir avec la programmation) –

+1

@MarcoSalerno, vous n'avez aucune expérience avec gwt. –

Répondre

1

Votre @JsType importation est erroné. Il devrait être

import jsinterop.annotations.JsType; 

Si cela ne fonctionne pas, assurez-vous que vous avez fait jsinterop-annotations la version 1.0.1 dans vos dépendances.

Si vous voyez l'ancienne annotation, alors vous utilisez GWT 2.7 ou antérieur en plus de GWT 2.8 - jamais une bonne idée de mélanger des versions.

+0

Thx, j'ai oublié de rafraîchir les importations dans l'idée après la mise à jour GWT jusqu'à 2,8. Donc, maven a travaillé avec 2.8, alors que IDE m'a induit en erreur avec des importations de 2.7. Lien vers la dépendance jsinterop-annotations a également aidé, parce que je ne l'ai pas rencontré n'importe où dans les documents. –

+0

jsinterop-base est une autre bonne dépendance - si vous utilisez Elemental2, vous le récupérerez de manière transitive. Il comprend beaucoup de «colle» que nous aurions utilisé autrement JSNI dans le passé, et fonctionnera toujours dans GWT3 quand il arrivera. –