当前位置: 首页 > 知识库问答 >
问题:

打开SAML xml API Maven依赖性问题

潘英豪
2023-03-14

我正试图通过Maven将开放的SAML库添加到我的Grails项目中。所以到了pom。xml我添加了开放的SAML依赖项:

    <dependency> 
        <groupId>org.opensaml</groupId> 
        <artifactId>opensaml</artifactId> 
        <version>2.5.1-1</version> 
    </dependency> 

    <dependency> 
        <groupId>org.opensaml</groupId> 
        <artifactId>openws</artifactId> 
        <version>1.4.2-1</version> 
    </dependency> 

    <dependency> 
        <groupId>org.opensaml</groupId> 
        <artifactId>xmltooling</artifactId> 
        <version>1.3.2-1</version>
    </dependency>

grails-run-appmvn-install运行良好,但当我将构建的war文件放入tomcat 8时,启动时出现以下错误:

2015-07-22 11:17:53,091 [localhost-startStop-1] ERROR context.ContextLoader  -       Context initialization failed
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]; nested exception is java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    ... 5 more
Caused by: java.lang.ClassNotFoundException: org.w3c.dom.ElementTraversal
    ... 7 more

从一个小小的研究中,我发现xml-apis: xml-apis: 1.4.01应该添加到我的pom文件中,这样它就会出现在未打包战争的WEB-INF/lib文件夹中。因此,我在pom文件中添加了以下依赖项:

    <dependency>
        <groupId>xml-apis</groupId>
        <artifactId>xml-apis</artifactId>
        <version>1.4.01</version>
        <scope>compile</scope>
    </dependency>

我还检查了由mvn dependency:tree-Dverbose生成的依赖关系树,发现:

+- xml-apis:xml-apis:jar:1.4.01:compile
+- org.opensaml:opensaml:jar:2.5.1-1:compile
|  +- (org.opensaml:openws:jar:1.4.2-1:compile - omitted for duplicate)
|  +- commons-collections:commons-collections:jar:3.1:compile
|  +- commons-lang:commons-lang:jar:2.1:compile
|  +- velocity:velocity:jar:1.5:compile
|  |  +- (commons-collections:commons-collections:jar:3.1:compile - omitted for duplicate)
|  |  \- (commons-lang:commons-lang:jar:2.1:compile - omitted for duplicate)
|  +- org.owasp.esapi:esapi:jar:2.0GA:compile
|  +- (xml-apis:xml-apis:jar:1.4.01:runtime - omitted for duplicate)
|  +- xerces:xercesImpl:jar:2.10.0:runtime
|  |  \- (xml-apis:xml-apis:jar:1.4.01:runtime - omitted for duplicate)
|  +- xml-resolver:xml-resolver:jar:1.2:runtime
|  \- xalan:xalan:jar:2.7.1:runtime
|     \- xalan:serializer:jar:2.7.1:runtime
|        \- (xml-apis:xml-apis:jar:1.3.04:runtime - omitted for conflict with 1.4.01)
+- org.opensaml:openws:jar:1.4.2-1:compile
|  +- (org.opensaml:xmltooling:jar:1.3.2-1:compile - omitted for duplicate)
|  +- commons-codec:commons-codec:jar:1.3:compile
|  +- commons-httpclient:commons-httpclient:jar:3.1:compile
|  |  \- (commons-codec:commons-codec:jar:1.2:compile - omitted for conflict with 1.3)
|  +- (xml-apis:xml-apis:jar:1.4.01:runtime - omitted for duplicate)
|  +- (xerces:xercesImpl:jar:2.10.0:runtime - omitted for duplicate)
|  +- (xml-resolver:xml-resolver:jar:1.2:runtime - omitted for duplicate)
|  \- (xalan:xalan:jar:2.7.1:runtime - omitted for duplicate)
+- org.opensaml:xmltooling:jar:1.3.2-1:compile
|  +- org.slf4j:slf4j-api:jar:1.6.1:compile
|  +- org.slf4j:jcl-over-slf4j:jar:1.6.1:compile
|  |  \- (org.slf4j:slf4j-api:jar:1.6.1:compile - omitted for duplicate)
|  +- org.slf4j:log4j-over-slf4j:jar:1.6.1:compile
|  |  \- (org.slf4j:slf4j-api:jar:1.6.1:compile - omitted for duplicate)
|  +- org.slf4j:jul-to-slf4j:jar:1.6.1:compile
|  |  \- (org.slf4j:slf4j-api:jar:1.6.1:compile - omitted for duplicate)
|  +- joda-time:joda-time:jar:2.8.1:compile
|  +- org.bouncycastle:bcprov-jdk15:jar:1.45:compile
|  +- org.apache.santuario:xmlsec:jar:1.4.4:compile
|  +- ca.juliusdavies:not-yet-commons-ssl:jar:0.3.9:compile
|  |  \- (commons-httpclient:commons-httpclient:jar:3.0:compile - omitted for conflict with 3.1)
|  +- net.jcip:jcip-annotations:jar:1.0:compile
|  +- (xml-apis:xml-apis:jar:1.4.01:runtime - omitted for duplicate)
|  +- (xerces:xercesImpl:jar:2.10.0:runtime - omitted for duplicate)
|  +- (xml-resolver:xml-resolver:jar:1.2:runtime - omitted for duplicate)
|  \- (xalan:xalan:jar:2.7.1:runtime - omitted for duplicate)

似乎所需的xml API jar将被打包到war文件中,以便保存在WEB-INF/lib中,但在使用mvn install构建war后,在pom文件中使用它,我仍然会收到上面的“未发现类”错误,xml API jar也不会出现在WEB-INF/lib文件夹中。我想我遵循了解决这个问题的常规方法,但我仍然无法解决这个问题。有人知道为什么xml API依赖项没有打包到war文件中,或者为什么在Tomcat启动期间出现此错误吗?谢谢

共有1个答案

戚兴思
2023-03-14

我能够通过将xerces: xercesImpl jar从POM中的所有Open SAML依赖项中排除来解决这个问题。

POM中的Open SAML依赖项如下所示:

    <dependency> 
        <groupId>org.opensaml</groupId> 
        <artifactId>opensaml</artifactId> 
        <version>2.5.1-1</version>
        <exclusions>
            <exclusion>
                <groupId>xerces</groupId> 
                <artifactId>xercesImpl</artifactId> 
            </exclusion>
        </exclusions>
    </dependency> 
    <dependency> 
        <groupId>org.opensaml</groupId> 
        <artifactId>openws</artifactId> 
        <version>1.4.2-1</version> 
        <exclusions>
            <exclusion>
                <groupId>xerces</groupId> 
                <artifactId>xercesImpl</artifactId> 
            </exclusion>
        </exclusions>
    </dependency> 
    <dependency> 
        <groupId>org.opensaml</groupId> 
        <artifactId>xmltooling</artifactId> 
        <version>1.3.2-1</version>
        <exclusions>
            <exclusion>
                <groupId>xerces</groupId> 
                <artifactId>xercesImpl</artifactId> 
            </exclusion>
        </exclusions>
    </dependency>
 类似资料:
  • 获取错误: 错误:无法解析“”的依存关系:app@debugUnitTest/compileClasspath:无法解析com。googlecode。mp4parser:isoparser:1.1.22。打开文件显示详细信息 对于依存关系: 但对于依赖: Gradle同步成功。 尝试使用存储库: 详细错误: 无法解析“”的依存关系:app@StagingUnitTest/compileClassp

  • 我在eclipse中有一个JavaNLP项目(比如X),它在maven中有依赖项 现在,我已经使用JavaSwing为这个项目(x)构建了UI,JavaSwing是eclipse中的另一个项目(比如Y)。 当我运行项目Y(点击按钮时调用项目X)时,会给我带来错误,比如 java.lang.NoClassDefFoundError: edu/stanford/nlp/ie/NER分类文件 我认为这是

  • 我正在尝试安装bindiff。当我尝试通过archive manager安装时,我收到了以下消息“依赖关系不可满足:sun-java6-jre”。(我正在运行ubuntu 12.10) 我已尝试添加存储库 这并没有奏效。 我目前也安装了java 7,并完成了sudo apt-get更新 我尝试了“sudo apt-get install sun-java6-jdk”,我收到了以下内容: sudo

  • 在哪里可以找到repo以下载下面列出的缺失依赖项。我尝试了以下存储库,但找不到这些依赖项。 我的存储库是:

  • 构建问题我的android应用程序找不到依赖项,不确定是什么问题。它昨天工作,没有更改任何代码。 有人知道怎么解决这个问题吗?

  • 运行composer update时。我正在获取此错误列表。请尽快给我建议解决方案。 问题1-照亮/支持v5.5.2需要PHP