【问题标题】:Intershop studio 4.20.0 - compileJava - ClassNotFoundException: com.sun.xml.bind.v2.ContextFactoryIntershop studio 4.20.0 - compileJava - ClassNotFoundException: com.sun.xml.bind.v2.ContextFactory
【发布时间】:2022-06-23 00:24:46
【问题描述】:

升级到 Intershop studio 4.20.0 后,我无法编译 java。 我得到的消息是

javax.xml.bind.JAXBException
- with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.bind.v2.ContextFactory]
    at     com.intershop.beehive.pipeline.internal.definition.PipelineNodeDefinitionSerializer.serialize(PipelineNodeDefinitionSerializer.java:38)
    ... 42 more
Caused by: java.lang.ClassNotFoundException: com.sun.xml.bind.v2.ContextFactory

在谷歌搜索此消息后,我发现它与使用 Java 11 构建有关,并且我看到工作室使用 IntershopStudio.ini 中指定的插件 JRE v11。

我尝试在我的用户文件夹 gradle.properties 中设置显式 JDK 路径(没有帮助),然后在 Window -> Preferences -> Gradle -> Arguments 中也没有帮助。

我也尝试在 IntershopStudio.ini 中设置 JDK,但它不会启动,因为它至少需要版本 11。

请不要让 Gradle 任务在从命令行运行时起作用,这就是为什么我认为它是特定于工作室的。

请告知如何解决此问题。

【问题讨论】:

    标签: java gradle intershop


    【解决方案1】:

    我不知道造成这种情况的根本原因(我也遇到过)。但是您可以通过将系统属性“javax.xml.bind.context.factory”设置为“com.sun.xml.internal.bind.v2.ContextFactory”来使用解决方法。 这可以通过多种方式完成,但我发现在 gradle.properties 中设置它是最简单的,所以只需将以下行附加到您的 gradle.properties 文件:

    systemProp.javax.xml.bind.context.factory=com.sun.xml.internal.bind.v2.ContextFactory
    

    从 Studio 构建的这个 gradle 应该可以再次工作。

    【讨论】:

      【解决方案2】:

      首先,确保在工作室根文件夹的 studio.ini 文件中为 JVM 设置正确的 JDK 11。 (现在不确定正确的文件名,但你知道是哪一个。) 嵌入式 JDK 不适合很多用例。

      其次,确保通过开发者 shell(gradle 环境 bat)打开工作室,它提供了正确的 JAVA_HOME 用于构建(如果您部署了服务器)。或者,在工作室的 Intershop 偏好设置中设置 gradle 环境 bat 或服务器安装。

      第三,确保您的 JDK 运行时首选项默认为 JDK 8(或服务器 JDK)。 (应该是粗体)

      最后,确保您的 gradle 设置使用包装器就足够了。

      【讨论】:

        猜你喜欢
        • 2015-06-11
        • 1970-01-01
        • 1970-01-01
        • 2021-06-13
        • 1970-01-01
        • 2020-01-20
        • 2016-08-02
        • 2013-05-11
        • 2015-02-17
        相关资源
        最近更新 更多