Java 如果目标文件夹不存在,Maven依赖项上的NoClassDefFoundError

Java 如果目标文件夹不存在,Maven依赖项上的NoClassDefFoundError,java,maven,netbeans,Java,Maven,Netbeans,目前我的NetBeans 8.0做了最奇怪的事情 我有一个多模块项目。通常,如果模块在maven存储库中,我甚至不需要打开或下载项目。目前,我的一些模块需要打开和构建,这样目标文件夹就位于项目目录中,里面充满了类。如果不是,我会得到一个NoClassDefFoundError 错误如下所示: Exception in thread "main" java.lang.NoClassDefFoundError: SOME/CLASS/THAT/IS/EXPECTED/IN/TARGET/FOLDER

目前我的NetBeans 8.0做了最奇怪的事情

我有一个多模块项目。通常,如果模块在maven存储库中,我甚至不需要打开或下载项目。目前,我的一些模块需要打开和构建,这样目标文件夹就位于项目目录中,里面充满了类。如果不是,我会得到一个NoClassDefFoundError

错误如下所示:

Exception in thread "main" java.lang.NoClassDefFoundError: SOME/CLASS/THAT/IS/EXPECTED/IN/TARGET/FOLDER/OF/SOME/MODULE/THAT/IS/A/DEPENDENCY
at ...
Caused by: java.lang.ClassNotFoundException: com.example.SOME.CLASS.THAT.IS.EXPECTED.IN.TARGET.FOLDER.OF.SOME.MODULE.THAT.IS.A.DEPENDENCY
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 2 more
<parent>
    <groupId>some</groupId>
    <artifactId>parent</artifactId>
    <version>0.9-SNAPSHOT</version>
</parent>

<scm>
    <developerConnection>scm:svn:https://someconnection</developerConnection>
</scm>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <configuration>
                <tagBase>sometagbase/tags</tagBase>
            </configuration>
        </plugin> 
    </plugins>
</build>

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
    </dependency>
    <dependency>
        <groupId>myModuleGroupId</groupId>
        <artifactId>somModule1</artifactId>
        <version>1.2.1-SNAPSHOT</version>
        <type>jar</type>
    </dependency>
      ...... many of these here
</dependencies>
我的POM如下所示:

Exception in thread "main" java.lang.NoClassDefFoundError: SOME/CLASS/THAT/IS/EXPECTED/IN/TARGET/FOLDER/OF/SOME/MODULE/THAT/IS/A/DEPENDENCY
at ...
Caused by: java.lang.ClassNotFoundException: com.example.SOME.CLASS.THAT.IS.EXPECTED.IN.TARGET.FOLDER.OF.SOME.MODULE.THAT.IS.A.DEPENDENCY
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 2 more
<parent>
    <groupId>some</groupId>
    <artifactId>parent</artifactId>
    <version>0.9-SNAPSHOT</version>
</parent>

<scm>
    <developerConnection>scm:svn:https://someconnection</developerConnection>
</scm>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <configuration>
                <tagBase>sometagbase/tags</tagBase>
            </configuration>
        </plugin> 
    </plugins>
</build>

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
    </dependency>
    <dependency>
        <groupId>myModuleGroupId</groupId>
        <artifactId>somModule1</artifactId>
        <version>1.2.1-SNAPSHOT</version>
        <type>jar</type>
    </dependency>
      ...... many of these here
</dependencies>

为什么突然需要一个包含类的目标文件夹?它不应该从依赖项中获取它们吗?从存储库中

依赖项通常不存储在目标目录中。它们通常作为一个整体从项目目录中删除。如果该存储库碰巧位于目标目录中,则会出现一些问题,但我认为它们会有所不同。作为JAR的依赖项存储在.m2目录中的本地存储库中,或者部署到我们公司的远程存储库中,maven从中获取它们。但是,这一次,如果我没有在本地构建依赖项,从而在依赖项文件夹中创建目标文件夹,则会发生此错误。然而,这不应该是必要的。这意味着,如果我想使用模块,即使用8个以上的模块,我必须下载所有模块并在本地构建它们——这完全超出了拥有maven存储库的目的