gpt4 book ai didi

java - GWT 编译无法加载类

转载 作者:行者123 更新时间:2023-11-29 04:11:00 25 4
gpt4 key购买 nike

我正在尝试通过命令行从我的项目编译 GWT(没有 Ant/Maven)像这样

java -cp "/home/user/gwt-2.8.2/*:/home/user/myapp/src:/home/user/myapp/lib/*" com.google.gwt.dev.Compiler com.myapp.webservices.SpwrWebServices

但是抛出错误

Loading inherited module 'com.myapp.webservices.SpwrWebServices'
Loading inherited module 'gwt.material.design.GwtMaterialWithJQuery'
Loading inherited module 'gwt.material.design.GwtMaterialDesignBase'
[WARN] Line 40: Setting configuration property named 'CssResource.legacy' in module 'gwt.material.design.GwtMaterialDesignBase' that has not been previously defined
[ERROR] Line 18: Unable to load class 'com.myapp.webservices.client.util.GitCommitGenerator'
java.lang.ClassNotFoundException: com.myapp.webservices.client.util.GitCommitGenerator
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at com.google.gwt.dev.cfg.ModuleDefSchema$ClassAttrCvt.convertToArg(ModuleDefSchema.java:899)
at com.google.gwt.dev.util.xml.HandlerArgs.convertToArg(HandlerArgs.java:64)
at com.google.gwt.dev.util.xml.HandlerMethod.invokeBegin(HandlerMethod.java:221)
at com.google.gwt.dev.util.xml.ReflectiveParser$Impl.startElement(ReflectiveParser.java:296)
at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at com.google.gwt.dev.util.xml.ReflectiveParser$Impl.parse(ReflectiveParser.java:349)
at com.google.gwt.dev.util.xml.ReflectiveParser$Impl.access$200(ReflectiveParser.java:70)
at com.google.gwt.dev.util.xml.ReflectiveParser.parse(ReflectiveParser.java:431)
at com.google.gwt.dev.cfg.ModuleDefLoader.nestedLoad(ModuleDefLoader.java:316)
at com.google.gwt.dev.cfg.ModuleDefLoader.load(ModuleDefLoader.java:243)
at com.google.gwt.dev.cfg.ModuleDefLoader.doLoadModule(ModuleDefLoader.java:193)
at com.google.gwt.dev.cfg.ModuleDefLoader.loadFromResources(ModuleDefLoader.java:151)
at com.google.gwt.dev.cfg.ModuleDefLoader.loadFromClassPath(ModuleDefLoader.java:126)
at com.google.gwt.dev.Compiler.compile(Compiler.java:139)
at com.google.gwt.dev.Compiler$1.run(Compiler.java:118)
at com.google.gwt.dev.CompileTaskRunner.doRun(CompileTaskRunner.java:55)
at com.google.gwt.dev.CompileTaskRunner.runWithAppropriateLogger(CompileTaskRunner.java:50)
at com.google.gwt.dev.Compiler.main(Compiler.java:125)

我确实有文件 src/com/myapp/webservices/client/util/GitCommitGenerator.java 所以我不明白我显示了这个错误。我的 gwt 配置 xml 文件如下所示

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.7.0//EN" "\s">
<module rename-to= "SpwrWebServices">
<inherits name="com.google.gwt.user.User" />

<!-- GwtMaterialWithJQuery module is smaller and should be used for production code -->
<!-- <inherits name="gwt.material.design.GwtMaterialWithJQuery" /> -->

<!-- GWTMaterialWithJQueryDebug This module is larger and includes non-minified source for easier debugging -->
<!-- GWT Material -->
<inherits name="gwt.material.design.GwtMaterialWithJQuery"/>
<inherits name="gwt.material.design.addins.GwtMaterialAddins"/>
<inherits name="org.fusesource.restygwt.RestyGWT" />
<inherits name='com.googlecode.gwt.charts.Charts'/>
<inherits name="org.moxieapps.gwt.uploader.Uploader"/>
<set-property name="gwt.logging.enabled" value="TRUE"/>
<set-property name="gwt.logging.logLevel" value="INFO"/>
<generate-with class="com.myapp.webservices.client.util.GitCommitGenerator">
<when-type-assignable class="com.myapp.webservices.client.util.GitCommit"/>
</generate-with>
<source path="client" />
<!-- <source path ="shared" /> -->
<entry-point
class="com.myapp.webservices.client.SpwrWsEntryPoint" />
<set-property name="user.agent" value="gecko1_8,safari"/>
<set-configuration-property name='xsiframe.failIfScriptTag' value='FALSE'/>
</module>

上面的配置有什么问题,我怎样才能得到一个干净的编译?

最佳答案

首先,生成器不应该再写新的,你应该从 Java Annotation Processors 或其他一些不依赖于 GWT 编译器生成代码的特性开始。

其次,您编写的任何生成器都不应该放在您的 client 包中,而应该放在 GWT 不会尝试将其编译为 JS 源代码的某个地方。人们通常对类使用 rebind 约定,这样您就可以更改 GWT 代码的绑定(bind)并生成新类。

最后,看起来您在源代码上运行 GWT 编译器,而没有先用 java 编译它们。首先,使用 javac 将所有 .java 文件编译为 .class 文件,然后将它们传递到类路径的其余部分。从技术上讲,您只需要生成器及其引用的任何内容,但您可能希望 Javac 在 GWT 之前报告错误,因为它会做得更好。

考虑使用 Maven 或 Gradle 来管理您的构建,这样它就可以为您完成 javac 工作,并构建类路径以提供给 GWT。

关于java - GWT 编译无法加载类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55158429/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com