首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XJC编译器抛出异常

XJC编译器抛出异常
EN

Stack Overflow用户
提问于 2020-11-03 01:22:23
回答 1查看 323关注 0票数 0

这是我在stackoverflow上的第一篇文章。所以,如果我做错了什么,或者违反了一些我不知道的规则,请耐心等待。

我尝试用xjc编译器将一个xsd文件(实际上是两个)编译成一组java类。对于这个任务,我有一个ANT文件,它通常工作得很好。现在我想使用Xequals和XhashCode插件(根据jaxb2-basics文档)。但是每次我得到一个异常:[xjc] org.xml.sax.SAXNotSupportedException: FEATURE_SECURE_PROCESSING: Feature can not be set to "false" if security manager is present.

完整的堆栈跟踪附加在下面。

据我所知(希望是正确的),正在运行的JVM设置了一个安全管理器,并且在xjc过程中不知何故将XML选项FEATURE_SECURE_PROCESSING设置为false。

但我没有找到解决问题的办法。我不知道如何影响这个标志或如何禁用安全管理器(最后一个实际上不是我想要做的)。

我的ant文件如下所示

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project name="RunningXjc" default="generate-sources" basedir=".">
    <description>Runs Xjc Binding Compiler</description>
    <target name="generate-sources">
        <!-- Define the xjc task -->
        <taskdef name="xjc" classname="org.jvnet.jaxb2_commons.xjc.XJC2Task">
            <!-- XJC2 Task classpath -->
            <classpath>
                    <fileset dir="${basedir}/../lib">
                    <include name="activation-*.jar"/>
                    <include name="jaxb-api-*.jar"/>
                    <include name="jaxb-impl-*.jar"/>
                    <include name="jsr173_api-*.jar"/>
                    <include name="stax-api-*.jar"/>
                    <include name="jaxb-xjc-*.jar"/>
                    <include name="jaxb2-basics-ant-*.jar"/>
                </fileset>
            </classpath>
        </taskdef>
        <mkdir dir="${basedir}/de.tesat.ppdfw.api.postprocessing.server.gen2"/>
        <!-- Generate the code -->
        <xjc destdir="${basedir}/de.tesat.ppdfw.api.postprocessing.server.gen2" extension="true">
            <arg line="
                -Xequals
                -XhashCode
                -XtoString
                -Xcopyable"/>
            <schema dir="${basedir}">
                <include name="**/*.xsd"/>
            </schema>
            <!-- Plugins -->
            <classpath>
                <fileset dir="${basedir}/../lib">
                    <!-- JAXB2 Basics library -->
                    <include name="jaxb2-basics-*.jar"/>
                    <!-- JAXB2 Basics library dependencies -->
                    <include name="jaxb2-basics-runtime-*.jar"/>
                    <include name="jaxb2-basics-tools-*.jar"/>
                    <include name="commons-beanutils-*.jar"/>
                    <include name="commons-lang3-*.jar"/>
                    <include name="commons-logging-*.jar"/>
                </fileset>
            </classpath>
        </xjc>
    </target>
</project>

有没有人在过去遇到过同样的困难?我在jdk 8上运行,我希望我已经提供了所有必要的信息来帮助我解决这个问题。

非常感谢您提前给予的帮助!

例外:

代码语言:javascript
复制
  [xjc] build id of XJC is 2.3.0
      [xjc] Checking timestamp of C:\Users\hei2bk\pp-dfw-master2\git\pp-dfw\de.tesat.ppdfw.api.postprocessing.server\gen\bigDecimal_binding.xsd
      [xjc] Checking timestamp of C:\Users\hei2bk\pp-dfw-master2\git\pp-dfw\de.tesat.ppdfw.api.postprocessing.server\gen\postprocessingserver.xsd
      [xjc] the last modified time of the inputs is  1604333677874
      [xjc] the last modified time of the outputs is -9223372036854775808
      [xjc] SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
      [xjc] SLF4J: Defaulting to no-operation (NOP) logger implementation
      [xjc] SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
      [xjc] Consider using <depends>/<produces> so that XJC won't do unnecessary compilation
      [xjc] Compiling file:/C:/Users/hei2bk/pp-dfw-master2/git/pp-dfw/de.tesat.ppdfw.api.postprocessing.server/gen/bigDecimal_binding.xsd and others
      [xjc] Nov 02, 2020 5:57:49 PM com.sun.xml.bind.v2.util.XmlFactory createSchemaFactory
      [xjc] SCHWERWIEGEND: null
      [xjc] org.xml.sax.SAXNotSupportedException: FEATURE_SECURE_PROCESSING: Feature kann nicht auf "false" gesetzt werden, wenn Security Manager vorhanden ist.
      [xjc]     at com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory.setFeature(XMLSchemaFactory.java:369)
      [xjc]     at com.sun.xml.bind.v2.util.XmlFactory.createSchemaFactory(XmlFactory.java:110)
      [xjc]     at com.sun.tools.xjc.reader.xmlschema.parser.SchemaConstraintChecker.check(SchemaConstraintChecker.java:86)
      [xjc]     at com.sun.tools.xjc.ModelLoader.loadXMLSchema(ModelLoader.java:342)
      [xjc]     at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:162)
      [xjc]     at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:117)
      [xjc]     at com.sun.tools.xjc.XJCBase._doXJC(XJCBase.java:837)
      [xjc]     at com.sun.tools.xjc.XJCBase.doXJC(XJCBase.java:787)
      [xjc]     at com.sun.tools.xjc.XJCBase.execute(XJCBase.java:682)
      [xjc]     at com.sun.tools.xjc.XJC2Task.execute(XJC2Task.java:55)
      [xjc]     at org.jvnet.jaxb2_commons.xjc.XJC2Task.execute(XJC2Task.java:35)
      [xjc]     at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
      [xjc]     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      [xjc]     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      [xjc]     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      [xjc]     at java.lang.reflect.Method.invoke(Method.java:498)
      [xjc]     at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99)
      [xjc]     at org.apache.tools.ant.Task.perform(Task.java:350)
      [xjc]     at org.apache.tools.ant.Target.execute(Target.java:449)
      [xjc]     at org.apache.tools.ant.Target.performTasks(Target.java:470)
      [xjc]     at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1391)
      [xjc]     at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
      [xjc]     at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
      [xjc]     at org.eclipse.ant.internal.launching.remote.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:39)
      [xjc]     at org.apache.tools.ant.Project.executeTargets(Project.java:1254)
      [xjc]     at org.eclipse.ant.internal.launching.remote.InternalAntRunner.run(InternalAntRunner.java:461)
      [xjc]     at org.eclipse.ant.internal.launching.remote.InternalAntRunner.main(InternalAntRunner.java:143)

BUILD FAILED
C:\Users\hei2bk\pp-dfw-master2\git\pp-dfw\de.tesat.ppdfw.api.postprocessing.server\gen\buildWithEquals2.xml:22: java.lang.IllegalStateException: org.xml.sax.SAXNotSupportedException: FEATURE_SECURE_PROCESSING: Feature kann nicht auf "false" gesetzt werden, wenn Security Manager vorhanden ist.
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:109)
    at org.apache.tools.ant.Task.perform(Task.java:350)
    at org.apache.tools.ant.Target.execute(Target.java:449)
    at org.apache.tools.ant.Target.performTasks(Target.java:470)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1391)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1364)
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    at org.eclipse.ant.internal.launching.remote.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:39)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1254)
    at org.eclipse.ant.internal.launching.remote.InternalAntRunner.run(InternalAntRunner.java:461)
    at org.eclipse.ant.internal.launching.remote.InternalAntRunner.main(InternalAntRunner.java:143)
Caused by: java.lang.IllegalStateException: org.xml.sax.SAXNotSupportedException: FEATURE_SECURE_PROCESSING: Feature kann nicht auf "false" gesetzt werden, wenn Security Manager vorhanden ist.
    at com.sun.xml.bind.v2.util.XmlFactory.createSchemaFactory(XmlFactory.java:117)
    at com.sun.tools.xjc.reader.xmlschema.parser.SchemaConstraintChecker.check(SchemaConstraintChecker.java:86)
    at com.sun.tools.xjc.ModelLoader.loadXMLSchema(ModelLoader.java:342)
    at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:162)
    at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:117)
    at com.sun.tools.xjc.XJCBase._doXJC(XJCBase.java:837)
    at com.sun.tools.xjc.XJCBase.doXJC(XJCBase.java:787)
    at com.sun.tools.xjc.XJCBase.execute(XJCBase.java:682)
    at com.sun.tools.xjc.XJC2Task.execute(XJC2Task.java:55)
    at org.jvnet.jaxb2_commons.xjc.XJC2Task.execute(XJC2Task.java:35)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99)
    ... 10 more
Caused by: org.xml.sax.SAXNotSupportedException: FEATURE_SECURE_PROCESSING: Feature kann nicht auf "false" gesetzt werden, wenn Security Manager vorhanden ist.
    at com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory.setFeature(XMLSchemaFactory.java:369)
    at com.sun.xml.bind.v2.util.XmlFactory.createSchemaFactory(XmlFactory.java:110)
    ... 25 more
EN

回答 1

Stack Overflow用户

发布于 2020-11-04 16:07:20

首先,非常感谢你提供了更好的格式!

与此同时,我解决了我的问题,尽管我没有解决问题的根本原因。我尝试使用maven而不是ANT,这是开箱即用的。由于maven从maven central获得了必要的libs,因此libs版本可能会有所不同。为了尝试使用ANT,我从这里获得了必要的库JAXB2-Basic Plugins

为了帮助可能有同样问题的任何人,我的maven pom.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<project
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>

    <groupId>my own group id</groupId>
    <artifactId>my own artifact id</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <build>
        <plugins>

            <plugin>
                <groupId>org.jvnet.jaxb2.maven2</groupId>
                <artifactId>maven-jaxb2-plugin</artifactId>
                <version>0.14.0</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <generateDirectory>../gen</generateDirectory>
                            <generatePackage>packagename</generatePackage>
                            <schemaDirectory>../src/main/resources</schemaDirectory>
                            <!-- Since we got non-generated code under src/main/java/de.tesat.pam.api.structure.tools,
                                we cannot clean the output folder -->
                            <cleanPackageDirectories>false</cleanPackageDirectories>
                        </configuration>
                    </execution>
                </executions>
                <configuration>
                    <args>
                        <arg>-XsimpleEquals</arg>
                        <arg>-XsimpleHashCode</arg>
                    </args>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.jvnet.jaxb2_commons</groupId>
                        <artifactId>jaxb2-basics</artifactId>
                        <version>0.12.0</version>
                    </dependency>
                </dependencies>
            </plugin>

        </plugins>
    </build>

</project>

pom.xml文件位于名为xjc.generator的文件夹中。xsd文件包含在src/main/resources中。要使用xjc生成Java类,请运行maven,目标是generate-resources。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64650288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档