2009-11-09 12 views
16

Tengo una aplicación GWT 1.7 y quiero actualizarla a GWT 2 Milestone 2. La aplicación utiliza 2 grandes archivos CSS externos. En GWT 1.7 tenía una carpeta pública y puse ambos archivos CSS en la carpeta y mi aplicación compiló y funcionó bien. Ahora, para GWT 2 He creado una clase ResourceBundle y poner todos los sprites de imagen y CSS de la siguiente manera:GWT 2 CssResource cómo

public interface ResourceBundle extends ClientBundle { 

public static final ResourceBundle INSTANCE = GWT.create(ResourceBundle.class); 

@Source("com/web/tech/public/stylesheet1.css") 
public Css stylesheet1(); 

@Source("com/web/tech/public/stylesheet2.css") 
public Css stylesheet2(); 

@Source("com/docobo/keswick/keswickweb/public/images/organisnew.gif") 
public ImageResource add_org(); 

..... 
} 

la clase CSS es una clase CssResource extendiéndose vacío:

public interface Css extends CssResource{ 

} 

Luego, en mi onModuleLoad() yo uso:

StyleInjector.inject(ResourceBundle.INSTANCE.stylesheet1().getText()); 
StyleInjector.inject(ResourceBundle.INSTANCE.stylesheet2().getText()); 

Cuando compilo me sale el siguiente error:

 Rebinding com.docobo.keswick.keswickweb.client.ClientResources.ResourceBundle 
      Invoking <generate-with class='com.google.gwt.resources.rebind.context.InlineClientBundleGenerator'/> 
       Creating assignment for gxt_gray() 
        Replacing CSS class names 
        [ERROR] The following unobfuscated classes were present in a strict CssResource: 
         [ERROR] x-tab-scroller-left 
         [ERROR] x-tab-strip-disabled 
         [ERROR] ......loads of other styles 

Fix by adding String accessor method(s) to the CssResource interface for obfuscated classes, or using an @external declaration for unobfuscated classes. 

Siguiendo las instrucciones de arriba cuando uso @external por encima de todas mis clases de estilo en el archivo CSS me sale el siguiente error:

[ERROR] Generator 'com.google.gwt.resources.rebind.context.InlineClientBundleGenerator' threw threw an exception while rebinding 'com.docobo.keswick.keswickweb.client.ClientResources.ResourceBundle' 
java.lang.StringIndexOutOfBoundsException: String index out of range: -2 
at java.lang.String.substring(Unknown Source) 
at com.google.gwt.resources.css.GenerateCssAst$GenerationHandler.ignorableAtRule(GenerateCssAst.java:236) 
at org.w3c.flute.parser.Parser.atRuleDeclaration(Parser.java:1178) 
at org.w3c.flute.parser.Parser.ignoreStatement(Parser.java:622) 
at org.w3c.flute.parser.Parser.parserUnit(Parser.java:452) 
at org.w3c.flute.parser.Parser.parseStyleSheet(Parser.java:107) 
at org.w3c.flute.parser.Parser.parseStyleSheet(Parser.java:119) 
at com.google.gwt.resources.css.GenerateCssAst.exec(GenerateCssAst.java:663) 
at com.google.gwt.resources.rg.CssResourceGenerator.prepare(CssResourceGenerator.java:506) 
at com.google.gwt.resources.rebind.context.AbstractClientBundleGenerator.initAndPrepare(AbstractClientBundleGenerator.java:531) 
at com.google.gwt.resources.rebind.context.AbstractClientBundleGenerator.initAndPrepare(AbstractClientBundleGenerator.java:502) 
at com.google.gwt.resources.rebind.context.AbstractClientBundleGenerator.generate(AbstractClientBundleGenerator.java:179) 
at com.google.gwt.dev.cfg.RuleGenerateWith.realize(RuleGenerateWith.java:49) 
at com.google.gwt.dev.shell.StandardRebindOracle$Rebinder.tryRebind(StandardRebindOracle.java:108) 
at com.google.gwt.dev.shell.StandardRebindOracle$Rebinder.rebind(StandardRebindOracle.java:54) 
at com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:154) 
at com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOracle.java:143) 
at com.google.gwt.dev.Precompile$DistillerRebindPermutationOracle.getAllPossibleRebindAnswers(Precompile.java:315) 
at com.google.gwt.dev.jdt.WebModeCompilerFrontEnd.doFindAdditionalTypesUsingRebinds(WebModeCompilerFrontEnd.java:107) 
at com.google.gwt.dev.jdt.AbstractCompiler$CompilerImpl.process(AbstractCompiler.java:161) 
at org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:444) 
at com.google.gwt.dev.jdt.AbstractCompiler$CompilerImpl.compile(AbstractCompiler.java:84) 
at com.google.gwt.dev.jdt.AbstractCompiler$CompilerImpl.compile(AbstractCompiler.java:196) 
at com.google.gwt.dev.jdt.AbstractCompiler$CompilerImpl.access$300(AbstractCompiler.java:70) 
at com.google.gwt.dev.jdt.AbstractCompiler.compile(AbstractCompiler.java:481) 
at com.google.gwt.dev.jdt.BasicWebModeCompiler.getCompilationUnitDeclarations(BasicWebModeCompiler.java:113) 
at com.google.gwt.dev.jdt.WebModeCompilerFrontEnd.getCompilationUnitDeclarations(WebModeCompilerFrontEnd.java:49) 
at com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.precompile(JavaToJavaScriptCompiler.java:415) 
at com.google.gwt.dev.jjs.JavaScriptCompiler.precompile(JavaScriptCompiler.java:32) 
at com.google.gwt.dev.Precompile.precompile(Precompile.java:507) 
at com.google.gwt.dev.Precompile.precompile(Precompile.java:408) 
at com.google.gwt.dev.Compiler.run(Compiler.java:194) 
at com.google.gwt.dev.Compiler$1.run(Compiler.java:145) 
at com.google.gwt.dev.CompileTaskRunner.doRun(CompileTaskRunner.java:89) 
at com.google.gwt.dev.CompileTaskRunner.runWithAppropriateLogger(CompileTaskRunner.java:83) 
at com.google.gwt.dev.Compiler.main(Compiler.java:152) 

Respuesta

7

Tienes que resolver. Como ha señalado Thomas @ Grupos de Google -> El @external no debe ser puesto "por encima" del estilo

http://code.google.com/p/google-web-toolkit/wiki/CssResource#External ...

El ejemplo de este vínculo, el css se verá así:

@external .legacySelectorA, .legacySelectorB; 
.obfuscated .legacySelectorA { .... } 
.obfuscated .legacySelectorB { .... } 

/* @external also accepts tail-globs */ 
@external .myProject-*; 
.myProject-text {} 
.myProject-foo {} 
15

Probar con @NotStrict. Ejemplo:

@NotStrict 
@Source("com/web/tech/public/stylesheet1.css") 
public Css stylesheet1(); 
+0

Creo que esta es la respuesta correcta – xybrek

+1

'@ NotStrict' es "no recomendado para nuevo código": http://google-web-toolkit.googlecode.com/svn/javadoc/latest/com /google/gwt/resources/client/CssResource.NotStrict.html –

Cuestiones relacionadas