使用Java 11编译cumulocity-clients-java出错

3
我想使用Cumulocity API进行开发,所以我下载了Java示例的源代码(https://bitbucket.org/m2m/cumulocity-clients-java)版本1004.7.0。

在使用Maven和Java 11(OpenJDK 11.0.2)编译时,出现以下异常:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project device-capability-model: Fatal error compiling: java.lang.ExceptionInInitializerError: com.sun.tools.javac.code.TypeTags -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project device-capability-model: Fatal error compiling
....
Caused by: java.lang.ClassNotFoundException: com.sun.tools.javac.code.TypeTags
    at java.lang.ClassLoader.findClass (ClassLoader.java:718)
    at java.lang.ClassLoader.loadClass (ClassLoader.java:588)
    at lombok.launch.ShadowClassLoader.loadClass (ShadowClassLoader.java:422)
    at java.lang.ClassLoader.loadClass (ClassLoader.java:521)
    at java.lang.Class.forName0 (Native Method)
    at java.lang.Class.forName (Class.java:315)
    at lombok.javac.JavacTreeMaker$SchroedingerType.getFieldCached (JavacTreeMaker.java:156)
    at lombok.javac.JavacTreeMaker$TypeTag.typeTag (JavacTreeMaker.java:245)
    at lombok.javac.Javac.<clinit> (Javac.java:155)
    at lombok.javac.handlers.HandleGetter.<clinit> (HandleGetter.java:303)
    at java.lang.Class.forName0 (Native Method)
    at java.lang.Class.forName (Class.java:398)
    at lombok.core.SpiLoadUtil$1$1.next (SpiLoadUtil.java:111)
    at lombok.javac.HandlerLibrary.loadAnnotationHandlers (HandlerLibrary.java:171)
    at lombok.javac.HandlerLibrary.load (HandlerLibrary.java:156)
    at lombok.javac.JavacTransformer.<init> (JavacTransformer.java:44)
    at lombok.javac.apt.LombokProcessor.init (LombokProcessor.java:89)
    at lombok.core.AnnotationProcessor$JavacDescriptor.want (AnnotationProcessor.java:87)
    at lombok.core.AnnotationProcessor.init (AnnotationProcessor.java:140)
    at lombok.launch.AnnotationProcessorHider$AnnotationProcessor.init (AnnotationProcessor.java:69)
    at com.sun.tools.javac.processing.JavacProcessingEnvironment$ProcessorState.<init> (JavacProcessingEnvironment.java:678)

提供参考,使用的maven命令如下:

mvn clean package -Dmaven.test.skip=true -e

是否有与java 11兼容的版本?或者我需要进行哪些配置才能在java 11上编译?


你能否在这里发布pom.xml文件? - Sambit
你需要将 Lombok 依赖更新至 1.18.4 或更高版本。 - Stephen C
我使用版本1.18.10,但仍然出现相同的错误。 - pellyadolfo
1个回答

0
在Maven的pom.xml文件中注释掉下面这两行代码。
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>

您需要替换以下代码段

<plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version>
                </plugin>

使用以下代码在pom.xml中。

<plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version>
                    <configuration>
                        <release>11</release>
                    </configuration>
                </plugin>

你可以检查。


我已经尝试了你的解决方案,但现在出现了以下错误:[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.0:compile (default-compile) on project device-capability-model: Compilation failure: Compilation failure: [ERROR] /E:/data/git_repos/cumulocity/m2m-cumulocity-clients-java-3d14ee967178/device-capability-model/src/main/java/c8y/RemoteAccessCredentialsType.java:[16,46] cannot find symbol [ERROR] symbol: method getPassword() [ERROR] location: variable credentials of type c8y.RemoteAccessCredentials这些错误出现在device-capability-model上。 - Mircea
错误明确指出了凭据的问题,这意味着您要么没有传递密码,要么使用了错误的密码。 - Sambit
我认为您在某个地方使用用户名和密码来下载工件。根据您的问题,编译问题已经解决。如果您发布一个关于此的新问题,人们将能够帮助您。 - Sambit
使用Maven下载Cumulocity工件时不需要凭据。只需使用https://cumulocity.com/guides/microservice-sdk/java/中提供的存储库即可。 - driu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接