我尝试将项目GWT和Gxt从2.5.1,3.0.0升级到2.7,3.1.1。我能够通过一些变通方法成功构建项目,但无法运行它。我得到的错误是:
Loading inherited module 'com.ApplicationShellModule'
Loading inherited module 'com.sencha.gxt.ui.GXT'
Loading inherited module 'com.sencha.gxt.data.Data'
Loading inherited module 'com.sencha.gxt.core.Core'
[ERROR] Line 96: Value 'ie6' in not a valid value for property 'user.agent'
我正在尝试在applicationShellModule.gxt.xml中查找原因,这是我的gxt配置,如下面第96行所示:
<property-provider name="gxt.user.agent">
<![CDATA[
{window.alert("inside user agent gxt");
var ua = navigator.userAgent.toLowerCase();
if (ua.indexOf('trident') != -1) {
if (11 == document.documentMode) return 'gecko1_9';
return 'ie8';
}
if (ua.indexOf('msie') != -1) {
return 'ie8';
}
return 'chrome';
} ]]>
</property-provider>
<property-provider name="user.agent">
<![CDATA[
{ window.alert("inside user agent");
return 'ie8';
var ua = navigator.userAgent.toLowerCase();
if (ua.indexOf('trident') != -1) {
if (11 == document.documentMode) return 'gecko1_8';
return 'ie8';
}
if (ua.indexOf('msie') != -1) {
return 'ie8';
}
return 'safari';
} ]]>
</property-provider>
<property-provider name="user.agent.os">
<![CDATA[
{window.alert("inside user agent os");
return 'windows';
} ]]>
</property-provider>
<!-- Supported Browsers -->
<!-- uncomment this for dev after upgrade
<set-property name="gxt.user.agent" value="chrome, ie8, gecko1_9" />
<set-property name="user.agent.os" value="windows" />
<extend-property name="locale" values="en,es,ko,pt,ru,fr,hu,pl,zh_CN,zh_TW,tr,uk"/>
<set-property-fallback name="locale" value="en" />
<collapse-property name="locale" values="en, default" />
-->
<!-- changes for upgrade gwt -->
<set-property name="user.agent" value="ie8,ie9,opera,gecko1_8,safari" />
<set-property name="gxt.user.agent" value="ie8" />
<set-property name="user.agent.os" value="windows" />
<extend-property name="locale" values="en" />
<set-property-fallback name="locale" value="en" />
<collapse-property name="locale" values="en" />
<collapse-all-properties />
<set-configuration-property name="CssResource.obfuscationPrefix"
value="empty" />
<add-linker name="xsiframe"/>
<set-configuration-property name="devModeRedirectEnabled" value="true"/>
<set-property name="compiler.useSourceMaps" value="true"/>
<!-- upgrade changes over check last line setting to false below revert it to original-->
我已经在这里手动设置了用户代理,可以看到浏览器列表,但不是ie6,它出现在错误之下。我搜索了字符串'ie6',但我无法得到这个错误的实际原因。请帮我解决这个问题。
答案 0 :(得分:6)
Loading inherited module 'com.sencha.gxt.core.Core' [ERROR] Line 96: Value 'ie6' in not a valid value for property 'user.agent'
如果你看到这个,你的类路径上至少还有一个GXT 3.0副本 - 3.1.1中的Core.gwt.xml在96上有一个空行。
正如El Hoss在评论中提到的那样,GWT 2.7放弃了对IE6的支持,为了兼容,GXT 3.1做了同样的事情。如果您看到对IE6的引用,您可以在自己的项目中使用IE6进行自定义,或者实际上没有使用正确版本的GWT或GXT。
答案 1 :(得分:1)
有一些属性正在GWT和GXT罐中设置 例如: - user.agent - 对于GWT小于2.6.0 - 它们支持ie6 : - user.agent - 对于GWT大于2.6.0 - 他们不支持ie6
如果您有不同版本的GWT和GXT,那么您将收到编译错误。
即使您找到了解决方法 - 当您使用GWT和GXT的不同小部件时,它可能会失败。所以最好先更改版本。
如果你的基础GWT版本小于2.6.0 - 那么你需要GXT jar版本小于3.0.1
如果您的GWT版本大于或等于2.6.0,那么您需要添加GXT jar版本3.1.X