首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >GWT2 CssResource how to

GWT2 CssResource how to
EN

Stack Overflow用户
提问于 2009-11-09 23:13:12
回答 2查看 16.7K关注 0票数 16

我有一个GWT1.7应用程序,我想把它升级到GWT2里程碑2。这个应用程序使用两个很大的外部CSS文件。在GWT1.7中,我有一个公共文件夹,并将CSS文件都放在该文件夹中,我的应用程序编译后运行良好。现在,对于GWT2,我已经创建了一个ResourceBundle类,并将所有的图像精灵和CSS放在下面:

代码语言:javascript
复制
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();

.....
}

Css类是一个扩展CssResource的空类:

代码语言:javascript
复制
public interface Css extends CssResource{

}

然后在我的onModuleLoad()中我使用:

代码语言:javascript
复制
StyleInjector.inject(ResourceBundle.INSTANCE.stylesheet1().getText());
StyleInjector.inject(ResourceBundle.INSTANCE.stylesheet2().getText());

当我编译时,我得到以下错误:

代码语言:javascript
复制
     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.

按照上面的说明,当我在CSS文件中的所有样式类中使用@external时,我得到了以下错误:

代码语言:javascript
复制
 [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)  
EN

回答 2

Stack Overflow用户

发布于 2010-02-24 01:04:45

尝试使用@NotStrict。示例:

代码语言:javascript
复制
@NotStrict
@Source("com/web/tech/public/stylesheet1.css")
public Css stylesheet1();
票数 15
EN

Stack Overflow用户

发布于 2009-11-09 23:44:33

把它解决了。正如Thomas@Google Groups -->指出的那样,不能将@external放在样式之上

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

此链接中的示例css将如下所示:

代码语言:javascript
复制
@external .legacySelectorA, .legacySelectorB;
.obfuscated .legacySelectorA { .... }
.obfuscated .legacySelectorB { .... }

/* @external also accepts tail-globs */
@external .myProject-*;
.myProject-text {}
.myProject-foo {}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1701651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档