LibGDX HTML5 java.lang.StringIndexOutOfBoundsException Error - java

While creating a LibGDX app I was trying to get the GWT and HTML5 version to work. While I got the generated basic app working, I tried to get an app that i have been working on for a while working and after updating the *.gwt.xml file with the locations of the sources I then encountered this error.
com.badlogic.gdx.scenes.scene2d.utils.DragAndDrop.Payload
com.badlogic.gdx.scenes.scene2d.utils.DragAndDrop.Target
com.badlogic.gdx.scenes.scene2d.utils.DragAndDrop.Source
java.lang.StringIndexOutOfBoundsException
If you want to read the whole log: http://pastebin.com/NxVKp2eA
I am not sure where to even start finding the source of this error as it seems to be rooted inside libGDX and scene2d if you could enlighten me that would be excellent.
MY HTML ENTRY POINT:
package com.mygdx.game.client;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.backends.gwt.GwtApplication;
import com.badlogic.gdx.backends.gwt.GwtApplicationConfiguration;
import com.nolevelcap.wc.MainWC;
public class HtmlLauncher extends GwtApplication {
#Override
public GwtApplicationConfiguration getConfig () {
return new GwtApplicationConfiguration(1280, 720);
}
#Override
public ApplicationListener getApplicationListener () {
return new MainWC();
}
}
MY *.gwt.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit trunk//EN" "http://google-web-toolkit.googlecode.com/svn/trunk/distro-source/core/src/gwt-module.dtd">
<module>
<source path="com/nolevelcap/wc" />
<source path="com/nolevelcap/events" />
<source path="com/nolevelcap/widget" />
<source path="com/nolevelcap/utils" />
</module>
My GwtDefinition.gwt.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit trunk//EN" "http://google-web-toolkit.googlecode.com/svn/trunk/distro-source/core/src/gwt-module.dtd">
<module rename-to="html">
<inherits name='com.badlogic.gdx.backends.gdx_backends_gwt' />
<inherits name='com.badlogic.gdx.physics.box2d.box2d-gwt' />
<inherits name='MainWC' />
<entry-point class='com.mygdx.game.client.HtmlLauncher' />
<set-configuration-property name="gdx.assetpath" value="../core/assets" />
</module>
My GwtDefinitionSuperDev.gwt.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit trunk//EN" "http://google-web-toolkit.googlecode.com/svn/trunk/distro-source/core/src/gwt-module.dtd">
<module rename-to="html">
<inherits name='com.badlogic.gdx.backends.gdx_backends_gwt' />
<inherits name='com.badlogic.gdx.physics.box2d.box2d-gwt' />
<inherits name='MyTestGame' />
<entry-point class='com.mygdx.game.client.HtmlLauncher' />
<add-linker name="xsiframe"/>
<set-configuration-property name='xsiframe.failIfScriptTag' value='FALSE'/>
<set-configuration-property name="devModeRedirectEnabled" value="true"/>
<set-configuration-property name="gdx.assetpath" value="../core/assets" />
</module>

Related

GXT theme-replace stopped working

For some reason, my custom appearance is not being used to replace gxt class any longer (worked yesterday).
All I did was comment out this part, recompile application and then revert it and recompile again:
<replace-with class='com.test.Test_portal.web.theme.client.header.TestColumnHeaderAppearance'>
<when-type-is class='com.sencha.gxt.widget.core.client.grid.ColumnHeader.ColumnHeaderAppearance' />
</replace-with>
Relevant code:
<module>
<inherits name="com.sencha.gxt.theme.base.Base" />
<replace-with class='com.acdlabs.Test_portal.web.theme.client.header.TestColumnHeaderAppearance'>
<when-type-is class='com.sencha.gxt.widget.core.client.grid.ColumnHeader.ColumnHeaderAppearance' />
</replace-with>
</module>
public class TestColumnHeaderAppearance extends ColumnHeaderDefaultAppearance {
public interface TestColumnHeaderResources extends ColumnHeaderResources {
#Override
#Source({ "com/sencha/gxt/theme/base/client/grid/ColumnHeader.gss", "TestColumnHeader.gss" })
public TestColumnHeaderStyle style();
}
public interface TestColumnHeaderStyle extends DefaultColumnHeaderStyles {
String filterIcon();
}
public TestColumnHeaderAppearance() {
super(GWT.<ColumnHeaderResources> create(TestColumnHeaderResources.class));
}
}
public class TestColumnHeader<M> extends ColumnHeader<M> {
public TestColumnHeader(Grid<M> container, ColumnModel<M> cm, ColumnHeaderAppearance appearance) {
super(container, cm, appearance);
if (appearance.styles() instanceof TestColumnHeaderStyle) {
styles = (TestColumnHeaderStyle) appearance.styles(); // <-- this is never reached and I that's why I get exceptions like "Cannot read property 'filterIcon_0_g$' of undefined"
}
}
}
Can my browser be caching themes and ignoring my TestColumnHeaderAppearance?
Added a comment in TestColumnHeader, which shows that TestColumnHeaderAppearance is not being loaded.
Any ideas?
EDIT
It's working in different browser (fire fox), so it does seem like cache problem. Though I clear cache of the browser that's not working (chrome) and still no change. Deleted /target folter, recompile everything, still no changes.
EDIT 2
When application is built in .war format and deployed to tomcat, everything works (I can see that styling has changed). Might be a problem with super dev mode then or its configuration.
WeblibTheme.gwt.xml
<module>
<inherits name="com.sencha.gxt.theme.base.Base" />
<!-- Buttons -->
<replace-with class="com.test.Test_portal.web.theme.client.button.TestWebButtonCellAppearance">
<when-type-is class="com.sencha.gxt.cell.core.client.ButtonCell.ButtonCellAppearance" />
</replace-with>
<replace-with class="com.test.Test_portal.web.theme.client.field.TestWebDualListFieldAppearance">
<when-type-is class="com.sencha.gxt.widget.core.client.form.DualListField.DualListFieldAppearance" />
</replace-with>
<replace-with class='com.test.Test_portal.web.theme.client.header.TestColumnHeaderAppearance'>
<when-type-is class='com.sencha.gxt.widget.core.client.grid.ColumnHeader.ColumnHeaderAppearance' />
</replace-with>
<!-- Slider -->
<replace-with class="com.test.Test_portal.web.theme.client.slider.TestWebSliderAppearance">
<any>
<when-type-is class="com.sencha.gxt.cell.core.client.SliderCell.SliderAppearance" />
<when-type-is class="com.sencha.gxt.cell.core.client.SliderCell.HorizontalSliderAppearance" />
</any>
</replace-with>
<!-- TreeAppearance -->
<replace-with class="com.test.Test_portal.web.theme.client.tree.TestTreeAppearance">
<when-type-is class="com.sencha.gxt.widget.core.client.tree.Tree.TreeAppearance"/>
</replace-with>
<!-- DatePicker -->
<replace-with class="com.test.Test_portal.web.theme.client.datepicker.TestDatePickerAppearance">
<when-type-is class="com.sencha.gxt.widget.core.client.DatePicker.DatePickerAppearance"/>
</replace-with>
</module>
TestWeb.gwt.xml
<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='TestWeb'>
<!-- Inherit the core Web Toolkit stuff. -->
<inherits name='com.google.gwt.user.User' />
<inherits name='com.google.gwt.inject.Inject' />
<inherits name='com.google.gwt.resources.Resources' />
<!-- Other module inherits -->
<inherits name='com.gwtplatform.mvp.Mvp' />
<inherits name='com.gwtplatform.dispatch.Dispatch' />
<inherits name="org.atmosphere.gwt20.AtmosphereGwt20" />
<inherits name='com.sencha.gxt.chart.Chart' />
<inherits name='com.sencha.gxt.ui.GXT' />
<inherits name="com.google.gwt.logging.Logging" />
<inherits name="com.google.gwt.uibinder.UiBinder" />
<inherits name="com.googlecode.gwt.crypto.Crypto" />
<inherits name="com.test.chemwidgets.ChemWidgets" />
<inherits name="com.test.gxt_widgets.GxtWidgets" />
<inherits name="com.test.Test_portal.web.theme.WeblibTheme" />
<collapse-property name="user.agent.os" values="*" />
<collapse-property name="gxt.user.agent" values="air, safari*, chrome" />
<collapse-property name="gxt.user.agent" values="ie9, ie10" />
<collapse-property name="gxt.user.agent" values="gecko*" />
<replace-with class='com.sencha.gxt.chart.client.draw.engine.VML'>
<when-type-is class='com.sencha.gxt.chart.client.draw.Surface' />
<any>
<when-property-is name='user.agent' value='ie8' />
</any>
</replace-with>
<!-- Specify the app entry point class. -->
<entry-point class='com.test.Test_portal.web.client.TestWeb' />
<!-- Specify the paths for translatable code -->
<source path='client' />
<source path='shared' />
<set-property name="gwt.logging.logLevel" value="INFO" />
<set-configuration-property name='gin.ginjector'
value='com.test.Test_portal.web.client.gin.ClientGinjector' />
<set-configuration-property name='gin.ginjector'
value='com.test.Test_portal.web.client.gin.ClientGinjector' />
<!-- By default (GWT 2.7.0) CssResources uses CSS instead of GSS -->
<set-configuration-property name="CssResource.enableGss"
value="true" />
<!-- GWT Compiler converts all .css files to .gss, if value for CssResource.enableGss
is true -->
<set-configuration-property name="CssResource.conversionMode"
value="strict" />
<!-- The default for GSS in UiBinder -->
<set-configuration-property name="CssResource.gssDefaultInUiBinder"
value="true" />
<set-property name="compiler.stackMode" value="emulated" />
<set-configuration-property name="compiler.emulatedStack.recordFileNames"
value="true" />
<set-configuration-property name="compiler.emulatedStack.recordLineNumbers"
value="true" />
<set-property name="compiler.stackMode" value="emulated" />
<set-configuration-property name="compiler.emulatedStack.recordFileNames"
value="true" />
<set-configuration-property name="compiler.emulatedStack.recordLineNumbers"
value="true" />
</module>
TestWeb-dev.gwt.xml
<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='TestWeb'>
<!-- Inherit the core Web Toolkit stuff. -->
<inherits name="com.test.Test_portal.web.TestWeb" />
<!-- Collapsing all permutations into one. -->
<collapse-all-properties />
</module>
EDIT (fixed, no idea why):
Cleared my AppData\Local\Temp\ folder and recompiled the application. Maybe super dev mode ignored the changes made to modules until as long as temp folder held previous version?

Error compiling project with GWT

I just did a checkout of a project with SVN, and is showing me the following error.
I am really new using gwt and be very grateful if you could help me.
This is the error:
Loading inherited module 'com.google.web.bindery.event.Event'
[ERROR] Unable to find 'com/google/web/bindery/event/Event.gwt.xml' on your classpath; could be a
a typo, or maybe you forgot to include a classpath entry for source?
[ERROR] Line 22: Unexpected exception while processing element 'inherits'
This is my xml file
<?xml version="1.0" encoding="UTF-8"?>
<module>
<!-- Inherit the core Web Toolkit stuff. -->
<inherits name="com.smartgwt.SmartGwt" />
<inherits name="com.smartgwt.tools.SmartGwtTools" />
<inherits name="com.google.gwt.activity.Activity" />
<inherits name="com.google.gwt.place.Place" />
<inherits name='com.google.gwt.user.User'/>
<inherits name="com.google.web.bindery.event.Event" />
<inherits name="com.google.gwt.core.Core" />
<entry-point class='ch.datalynx.clessidra.client.Clessidra' />
<inherits name='com.google.gwt.user.theme.standard.Standard'/>
<!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> -->
<!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/> -->
<replace-with
class="ch.datalynx.clessidra.client.mvp.clientfactories.ClientFactoryImpl">
<when-type-is
class="ch.datalynx.clessidra.client.mvp.clientfactories.ClientFactory" />
</replace-with>
<source path='client' />
<source path='shared' />
</module>
Make sure the gwt-user.jar file is in your build path. It's part of the GWT SDK.
It is unable to find gwt-user.jar/com/google/web/bindery/event/Event.gwt.xml

Super dev mode + JSP page in Tomcat

I have a .jsp page (the main page of my gwt module) and I'm trying to enable super dev mode as I'm migrating to gwt 2.6.
Following the explanations I found out on internet, once I launch the codeserver and add the bookmarklets, next I gotta open the page in my browser, so I call the jsp page from my tomcat server.
The problem is that nothing happens, and looking at the chrome console it seems it is unable to find my module/module.nocache.js
Any idea?
EDIT : added .gwt.xml
<inherits name="XXX.frontend.gwt.Framework"/>
<inherits name="XXX.frontend.gwt.sample.frontend.module.blanc.Module"/>
<!-- Specify the paths for translatable code -->
<source path='client'/>
<source path='shared'/>
<!-- Specify the application entry point class -->
<entry-point class='XXX.frontend.gwt.client.FrameworkEntryPoint'/>
<!-- Compile for specific browser -->
<!-- <set-property name="user.agent" value="ie8,ie9,ie10,gecko1_8,safari" /-->
<!-- Compile for specific language -->
<extend-property name="locale" values="fr" />
<set-property-fallback name="locale" value="fr" />
<set-configuration-property name='xsiframe.failIfScriptTag' value='FALSE' />
<set-configuration-property name="devModeUrlWhitelistRegexp" value="http://(localhost|127\.0\.0\.1)(:\d+)?/.*" />
<add-linker name="xsiframe" />
<set-property name="compiler.useSourceMaps" value="true" />
You have to load your .nocache.js file from your codeserver instance.
In your .jsp you must have something like this:
<script src="http://localhost:9876/myapp/myapp.nocache.js"></script>
In your gwt.xml you need these lines as well:
<add-linker name="xsiframe"/>
<set-configuration-property name="devModeRedirectEnabled" value="true"/>
<set-property name="compiler.useSourceMaps" value="true" />

GWT app using UIBinder won't load properly

My GWT app, using UiBinder, won't load in Internet Explorer. However, it loads just fine in Firefox, Safari, and on the iPhone.
In trying to isolate the problem, I've been stripping out parts trying to find the root cause. I'm down to basically a Label and it still works in FF but not IE.
Here's the EntryPoint:
public class Core implements EntryPoint {
private static Core instance;
public static Core instance() {
return instance;
}
#Override
public void onModuleLoad() {
instance = this;
RootPanel container = RootPanel.get("container");
container.add(new Label("hi"));
}
}
Here's my index.jsp:
<!doctype html>
<html>
<head>
<script type="text/javascript" src="core/core.nocache.js"></script>
</head>
<body>
<div id="container"></div>
</body>
</html>
Here's my appengine-web.xml:
<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application>realAppNameHere</application>
<version>andrew</version>
<static-files>
<include path="**" />
<!-- The following line requires App Engine 1.3.2 SDK -->
<include path="**.nocache.*" expiration="0s" />
<include path="**.cache.*" expiration="365d" />
<exclude path="**.gwt.rpc" />
</static-files>
<!-- Configure java.util.logging -->
<system-properties>
<property name="java.util.logging.config.file" value="WEB-INF/logging.properties"/>
</system-properties>
</appengine-web-app>
And here's my web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
Even with this stripped-down version of everything, it still works in Firefox but not IE. Now there aren't even any bugs thrown, not even in Firebug... it just doesn't show the label in IE, but it will show the label in FF. I have no idea why this isn't running.
Anyone have any idea?
Edit 3:
Forgot the module.gwt.xml file:
<?xml version="1.0" encoding="UTF-8"?>
<module rename-to='core'>
<!-- Inherit the core Web Toolkit stuff. -->
<inherits name='com.google.gwt.user.User'/>
<inherits name='com.google.gwt.ajaxloader.AjaxLoader'/>
<inherits name="com.google.gwt.logging.Logging"/>
<inherits name='com.google.gwt.user.theme.clean.Clean'/>
<entry-point class='com.company.core.client.Core'/>
<source path='client'/>
<source path='shared'/>
<set-property name="gwt.logging.logLevel" value="SEVERE"/>
<set-property name="gwt.logging.enabled" value="FALSE"/>
<set-property name="gwt.logging.consoleHandler" value="ENABLED"/>
<set-property name="gwt.logging.simpleRemoteHandler" value="DISABLED" />
</module>
Some of the things won't come up in IE6 but it will definitely get loaded. The first thing you need to see is whether you have added an User agent for IE6 as
<set-property name="user.agent" value="ie6"/>
in your .gwt.xml file.
Next thing you need to check that whether you added an exception for localhost in your browser security settings.
If all this is done and still not working try to cleanup your project and recompile it.
From testing on an actual copy of IE (not the IE plugin for Firefox) we were able to see an error "console is not defined".
Turns out, this was throwing an exception in IE, preventing the page from loading:
public native static void log(String inString)
/*-{
console.log(inString);
}-*/;
So to solve this, we'll take out that reference to console and replace with a cross-browser logging library, such as GWT-Log

GWT [WARN] 404 - GET /birgit.chat.Chat.nocache.js comet

i can't get a comet chat example to run.
i get this error
[WARN] 404 - GET /birgit.chat.Chat.nocache.js (127.0.0.1) 1413 bytes
this is how my web.xml looks like
<servlet>
<servlet-name>chatComet</servlet-name>
<servlet-class>net.zschech.gwt.comet.server.CometServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>chatServiceImpl</servlet-name>
<servlet-class>birgit.chat.server.ChatServiceImpl</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>chatServiceImpl</servlet-name>
<url-pattern>/birgit.chat.Chat/chat</url-pattern>
</servlet-mapping>
This is my Chat.gwt.xml
<!DOCTYPE module SYSTEM "http://google-web-toolkit.googlecode.com/svn/trunk/distro- source/core/src/gwt-module.dtd">
<module >
<inherits name="com.google.gwt.user.User" />
<inherits name="com.google.gwt.user.theme.standard.Standard" />
<inherits name="net.zschech.gwt.comet.Comet" />
<servlet class="birgit.chat.server.ChatServiceImpl" path="/chat"/>
<entry-point class="birgit.chat.client.ChatEntryPoint" />
</module>
Those are packages i use
package birgit.chat.client;
package birgit.chat.server;
I think there is something wrong with path but i am out of ideas.
Please help.
Thank you.
First you should rename your module name in your *.gwt.xml , module has rename-to attribute which renames the module. After that you can reference your *.nocache.html with renamed module name.
<module rename-to="chatModule">
<inherits name="com.google.gwt.user.User" />
<inherits name="com.google.gwt.user.theme.standard.Standard" />
<inherits name="net.zschech.gwt.comet.Comet" />
<servlet class="birgit.chat.server.ChatServiceImpl" path="/chat"/>
<entry-point class="birgit.chat.client.ChatEntryPoint" />
</module>
and in your html page:
<script type="text/javascript" language="javascript"
src="chatModule/Chat.nocache.js"></script>

Categories