java - maven-shade-plugin ConnectException : Connection refused for getting java. sun.com DTD(由 XMLAppendingTransformer 处理以构建 Apache CXF)

标签 java web-services maven cxf dtd

我尝试构建旧版本的 Apache CXF,因为在我们的遗留项目中,我们使用版本 Apache CXF 2.2.2,但在构建完整库(使用 Maven 3.2.5)时出现此错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:1.2:shade (default)
on project cxf-bundle: Error creating shaded jar. Connection refused: connect

通过查看堆栈跟踪,我注意到了这一点:

org.apache.maven.plugins.shade.resource.XmlAppendingTransformer.processResource(XmlAppendingTransformer.java:61)

还有:

com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1282)

这是完整的堆栈跟踪:

mvn -e -Pfastinstall,everything
................................................
................................................

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:1.2:shade (default) on project cxf-bundle: Error creating shaded jar. Connection refused: connect -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:1.2:shade (default) on project cxf-bundle: Error creating shaded jar.
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:216)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:160)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.MojoExecutionException: Error creating shaded jar.
    at org.apache.maven.plugins.shade.mojo.ShadeMojo.execute(ShadeMojo.java:403)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    ... 19 more
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:519)
    at java.net.Socket.connect(Socket.java:469)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
    at sun.net.www.http.HttpClient.New(HttpClient.java:306)
    at sun.net.www.http.HttpClient.New(HttpClient.java:323)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:852)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:793)
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:718)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1041)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:677)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1315)
    at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1282)
    at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:283)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1193)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1090)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1003)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
    at org.jdom.input.SAXBuilder.build(SAXBuilder.java:453)
    at org.jdom.input.SAXBuilder.build(SAXBuilder.java:770)
    at org.apache.maven.plugins.shade.resource.XmlAppendingTransformer.processResource(XmlAppendingTransformer.java:61)
    at org.apache.maven.plugins.shade.DefaultShader.resourceTransformed(DefaultShader.java:249)
    at org.apache.maven.plugins.shade.DefaultShader.shade(DefaultShader.java:109)
    at org.apache.maven.plugins.shade.mojo.ShadeMojo.execute(ShadeMojo.java:361)
    ... 21 more

因为它提到了 XmlAppendingTransformerXMLEntityManager.startDTDEntity,所以我认为它与某些不再有效的 DTD 引用相关,例如出现在META-INF/cxf/extensions.xml中的:

<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">

但是我该如何解决这个问题呢?

我在公司 http 代理后面运行 Maven,并且我已经在我的 settings.xml 中配置了代理,但我仍然收到“无法连接”错误。

我也尝试过:

mvn -Dhttp.proxyHost=myproxy -Dhttp.proxyPort=myport -Dhttp.proxyUser=myuser -Dhttp.proxyPassword=mypassword -Pfastinstall,everything

但随后我收到此错误:

java.io.IOException: Server returned HTTP response code: 407 for URL: http://java.sun.com/dtd/properties.dtd

如何跳过 XMLAppendingTransformer 对 DTD 的检查?

最佳答案

经过更多的挖掘,我发现 ma​​ven-shade-plugin 有一个选项 ignoreDtd (实际上甚至启用了默认情况下),但它仅在版本 1.3.1 中引入,而 Apache CXF 2.2.2 使用 maven-shade-plugin 版本 1.2:

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>1.2</version>
            </plugin>

所以我的解决方案是将主pom.xml内的maven-shade-plugin升级到版本1.3.1:

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>1.3.1</version>
            </plugin>

但后来我开始收到另一个错误,该错误的性质非常不同,所以我在这里记录了它:

An API incompatibility was encountered while executing org.apache.maven.plugins:maven-shade-plugin:1.3.1:shade: java.lang.AbstractMethodError: null

关于java - maven-shade-plugin ConnectException : Connection refused for getting java. sun.com DTD(由 XMLAppendingTransformer 处理以构建 Apache CXF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32382088/

相关文章:

java - 检查对象是否被引用,以防止在不修改数据库的情况下软删除

spring - jetty-maven-plugin 和 loadTimeWeaver

java - 如何使用 Web 服务和 EclipseLink 作为 JPA 提供程序更新数据库?

asp.net - 无法使用 jQuery 从 ASP.NET Web 服务返回 JSON 对象

javascript - Json 到 csv 转换器(IE 8+)

java - Maven Eclipse错误: "Archive for required library cannot be read or is not a valid ZIP file"

java - 无法在我的项目 maven 中添加具有范围的 jar

java - Eratosthenes 筛法不会筛选素数

java - 使用 Android FirebaseListAdapter 时如何使用两种布局?

java - 尝试计算文件中单词数列表时出现运行时错误