Spring Project - 未指定Classworlds配置

时间:2016-04-08 13:35:06

标签: java eclipse spring maven spring-mvc

我是Spring和Maven开发的新手,我正在制作示例指南:https://spring.io/guides

实际上我正在尝试用eclipse制作一个jar文件。

以下指南就是这个:https://spring.io/guides/gs/device-detection/

信息:

系统:Windows 8.1(x64) - i5-62000U @ 2.30GHz

我在代理后面 - 它全部设置,eclipse成功处理所有依赖。

Eclipse: JEE Mars 2(版本4.5.2)

Java :JDK 1.8.0_77

JRE :JRE 1.8.0_77

Maven: 3.3.9

M2E :它安装在我的eclipse中(随JEE版本一起提供)。

STS :我没有使用Spring Tool Suite Eclipse,只使用Clean JEE Eclipse。

环境变量: JAVA_HOME,M2_HOME已设置好,接下来我就开始了。

Windows路径:

C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\OpenVPN\bin;C:\Program Files (x86)\Skype\Phone\;C:\Progra~1\apache-maven-3.3.9\bin;C:\Program Files\Java\jdk1.8.0_77\bin

上下文

我使用skip arcthetype选择创建了项目,并使用所有依赖项声明它(在示例后面)。

POM:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.3.RELEASE</version>
  </parent>
  <groupId>org.springframework</groupId>
  <artifactId>gs-device-detection</artifactId>
  <version>0.1.0</version>

  <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.mobile</groupId>
            <artifactId>spring-mobile-device</artifactId>
        </dependency>
    </dependencies>

    <properties>
        <java.version>1.8</java.version>
    </properties>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>spring-releases</id>
            <name>Spring Milestone Repository</name>
            <url>https://repo.spring.io/libs-release</url>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>spring-releases</id>
            <name>Spring Milestone Repository</name>
            <url>https://repo.spring.io/libs-release</url>
        </pluginRepository>
    </pluginRepositories>
</project>

.m2文件夹中的XML设置:

<?xml version="1.0" encoding="UTF-8"?>
<settings>
<proxies>
    <proxy>
      <id>optional</id>
      <active>true</active>
      <protocol>http</protocol>
      <username>MY_USER</username>
      <password>MY_PASSWORD</password>
      <host>MY_HOST</host>
      <port>3128</port>
    </proxy>
</proxies>
</settings>

“mvn -version”的输出:

C:\Users\MY_USER>mvn -version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T17:41:47+01:00)
Maven home: C:\Progra~1\apache-maven-3.3.9
Java version: 1.8.0_77, vendor: Oracle Corporation
Java home: C:\Progra~1\Java\jdk1.8.0_77\jre
Default locale: it_IT, platform encoding: Cp1252
OS name: "windows 8.1", version: "6.3", arch: "amd64", family: "dos"

问题:

到目前为止,我已经能够编译,运行和创建独立的jar文件服务,但在命令提示符中使用(每个都完美):

mvn spring-boot:run
mvn clean package

MY 问题是当我在Eclipse中执行时:选择Project&gt;运行为.. Maven Build

总是得到这个例外(无论我改变什么或者我在系统中放置或编辑或重新安装的内容):

java.lang.Exception: classworlds configuration not specified nor found in the classpath at  org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)

到目前为止我做了什么?

第一

我更改并重新安装的设置中的所有内容都是零(甚至是Java和Maven)。

我注意到这个“启动器”的源代码在专家会理解的丛中,但为了所有人的缘故,我把链接放在同一个问题上:

https://codehaus-plexus.github.io/plexus-classworlds/xref/org/codehaus/plexus/classworlds/launcher/Launcher.html

我看到我在maven安装目录中缺少classworlds.conf文件,但我不知道里面应该放什么或放在哪里。

第二

我还在GitHub中看到一些程序员有自己的classwordls.conf文件,但我不明白我在哪里放这个,或者为什么这个异常只出现在Eclipse而不是命令提示符中。

第三

另外我注意到有些人已将M2_HOME更改为M3_HOME(适用于我在StackOverflow中看到的一些Mac用户)。

第四

我看到其他人说这是对位于M2_HOME \ boot中的“​​plexus-classworlds-2.5.2.jar”的依赖。我不明白为什么,Maven “应该”处理所有依赖项。

提前谢谢。

1 个答案:

答案 0 :(得分:2)

对于遇到此问题的未来开发人员,我将保留所做的更改,以成功下载所有依赖项。

<强>首先: 公司里有一面镜子指向私人ArtiFactory并从那里下载所有工件,一些工件不存在以满足所有依赖关系,这就是为什么没有下载classworlds的主要原因。我请求支持并正确配置它。作为建议,检查始终是否正在下载依赖项的位置,如果它们 ARE 实际存在,并且您具有必要的权限。

<强>第二 我将我的eclipse版本更改为 Luna Service Release 2(4.4.2)并且连接问题已停止,我在其他答案和Maven Integration for Eclipse Luna and newer页面中看到了火星版本的一些错误报告4.5.2。

过去 还有一个额外的步骤可以避免与maven配置设置混淆,我将Eclipse中的文件位置更改为指向同一文件的全局设置和用户设置。这样您就知道如果设置有问题,您只需要检查一个文件。