Муравей gwtcompile ClassNotFoundException - PullRequest
       9

Муравей gwtcompile ClassNotFoundException

1 голос
/ 25 февраля 2012

Я настроил следующую задачу с помощью ant для компиляции моего проекта gwt.

    <taskdef resource="dk/contix/ant/gwt/ant-gwt.xml" classpathref="gwt.classpath" />
    <gwtcompile destdir="${www.dir}" optimize="true" version="1.6">
      <fileset dir="${src.dir}">
        <include name="**/*.gwt.xml"/>
      </fileset>
    </gwtcompile>

Я получаю эту ошибку:

[gwtcompile] [ERROR] Unexpected internal compiler error
[gwtcompile] java.lang.NoClassDefFoundError: com/google/gwt/dev/shell/PlatformSpecific
[gwtcompile]    at dk.contix.ant.gwt.GWT16Compile$1.run(GWT16Compile.java:40)
[gwtcompile]    at com.google.gwt.dev.CompileTaskRunner.doRun(CompileTaskRunner.java:88)
[gwtcompile]    at com.google.gwt.dev.CompileTaskRunner.runWithAppropriateLogger(CompileTaskRunner.java:82)
[gwtcompile]    at dk.contix.ant.gwt.GWT16Compile.execute(GWT16Compile.java:50)
[gwtcompile]    at dk.contix.ant.gwt.GWTCompileTask.execute(GWTCompileTask.java:136)
[gwtcompile]    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
[gwtcompile]    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
[gwtcompile]    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[gwtcompile]    at java.lang.reflect.Method.invoke(Method.java:601)
[gwtcompile]    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
[gwtcompile]    at org.apache.tools.ant.Task.perform(Task.java:348)
[gwtcompile]    at org.apache.tools.ant.Target.execute(Target.java:390)
[gwtcompile]    at org.apache.tools.ant.Target.performTasks(Target.java:411)
[gwtcompile]    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
[gwtcompile]    at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
[gwtcompile]    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
[gwtcompile]    at org.eclipse.ant.internal.launching.remote.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:32)
[gwtcompile]    at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
[gwtcompile]    at org.eclipse.ant.internal.launching.remote.InternalAntRunner.run(InternalAntRunner.java:424)
[gwtcompile]    at org.eclipse.ant.internal.launching.remote.InternalAntRunner.main(InternalAntRunner.java:138)
[gwtcompile] Caused by: java.lang.ClassNotFoundException: com.google.gwt.dev.shell.PlatformSpecific
[gwtcompile]    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
[gwtcompile]    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
[gwtcompile]    at java.security.AccessController.doPrivileged(Native Method)
[gwtcompile]    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
[gwtcompile]    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
[gwtcompile]    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
[gwtcompile]    ... 20 more

Итак, после многих исследований янаконец нашел старый файл gwt-dev-linux.jar.Когда я добавляю это к пути к классу, я получаю:

[gwtcompile] Comiling modules [com.heavyweightsoftware.leal.ui.ImageViewer]
[gwtcompile] Comiling modules [com.heavyweightsoftware.leal.ui.ImageViewer]
[gwtcompile] Loading module 'com.heavyweightsoftware.leal.ui.ImageViewer'
[gwtcompile]    Loading inherited module 'com.google.gwt.user.User'
[gwtcompile]       Loading inherited module 'com.google.gwt.animation.Animation'
[gwtcompile]          Loading inherited module 'com.google.gwt.core.Core'
[gwtcompile]             Loading inherited module 'com.google.gwt.core.CompilerParameters'
[gwtcompile]                [ERROR] Line 23: Unexpected element 'define-configuration-property'
[gwtcompile]                [ERROR] Failure while parsing XML
[gwtcompile] com.google.gwt.core.ext.UnableToCompleteException: (see previous log entries)

Что говорят форумы из-за старой версии dev в пути к классам.

Теперь я застрял ипонятия не имею, куда идти.Пожалуйста, сообщите.

Спасибо.

Ответы [ 2 ]

1 голос
/ 25 февраля 2012

У IMO нет единой причины использовать эту (устаревшую) задачу ant (она работает только с GWT 1.4, 1.5 и 1.6). Просто используйте задачу java для вызова класса com.google.gwt.dev.Compiler.

Следующие файлы вдохновлены файлом Ant build.xml, сгенерированным GWT WebAppCreator:

<java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler"
    classpathref="gwt.classpath">
  <!-- add jvmarg -Xss16M or similar if you see a StackOverflowError -->
  <jvmarg value="-Xmx256M"/>
  <arg line="-war"/>
  <arg value="${www.dir}"/>
  <!-- Additional arguments like -style PRETTY or -logLevel DEBUG -->
  <arg value="com.heavyweightsoftware.leal.ui.ImageViewer"/>
</java>

См. http://code.google.com/p/google-web-toolkit/source/browse/trunk/user/src/com/google/gwt/user/tools/templates/ant/build.xmlsrc для шаблона, используемого WebAppCreator.

0 голосов
/ 25 февраля 2012

Крутая вещь в Java - то, что если вы застряли, вы всегда можете попробовать поискать исходный код ...

Здесь вы можете проверить код для GWT16Compile: http://code.google.com/p/ant-gwt/source/browse/trunk/src/dk/contix/ant/gwt/GWT16Compile.java?r=12

вокруг строки 40 написано:

if (config.isOptimize()) {
   updater = PlatformSpecific.checkForUpdatesInBackgroundThread(logger, CheckForUpdates.ONE_DAY);
}

Может быть, вы можете попробовать установить для параметра optimize значение false в вашей конфигурации ant build и посмотреть, будет ли оно работать.

...