【问题标题】:VSCode Maven "X.java is not on the classpath of project Y"VSCode Maven“X.java 不在项目 Y 的类路径中”
【发布时间】:2021-06-05 20:08:43
【问题描述】:

目前我遇到的 Maven 问题是 Visual Studio Code,它会报告与类路径相关的错误。

项目结构如下:

project
| subproject1
--| src/main/java
  | src/main/resources
  | pom.xml
| subproject2
--| src/main/java
  | src/main/resources
  | pom.xml
| pom.xml

projectpom.xml 有:

<?xml version="1.0" encoding="UTF-8"?>

<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>

  <groupId>nl.svenar.powerranks</groupId>
  <artifactId>powerranks</artifactId>
  <version>1.0</version>

  <packaging>pom</packaging>
  
  <modules>
    <module>subproject1</module>
    <module>subproject2</module>
  </modules>
  
  <build>
    <defaultGoal>clean compile package</defaultGoal>
  </build>
</project>

此 POM 仅用作“虚拟”以编译每个子项目

并且在每个subprojectpom.xml 中都有以下内容:

<?xml version="1.0" encoding="UTF-8"?>

<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>

  <groupId>nl.svenar.powerranks</groupId>
  <artifactId>powerranks</artifactId>
  <version>2.0.0.248-bukkit-SNAPSHOT</version>

  <name>PowerRanks</name>

  <properties>
    <java.version>1.8</java.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <src.dir>src/main/java</src.dir>
  <rsc.dir>src/main/resources</rsc.dir>
  </properties>

  <build>
    <defaultGoal>clean compile package</defaultGoal>
  <finalName>${project.name}</finalName>
  <sourceDirectory>${src.dir}</sourceDirectory>
    <resources>
      <resource>
        <directory>${rsc.dir}</directory>
        <filtering>true</filtering>
      </resource>
    </resources>
    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
          <configuration>
            <source>${java.version}</source>
            <target>${java.version}</target>
          </configuration>
        </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-jar-plugin</artifactId>
          <version>2.3.1</version>
          <configuration>
            <outputDirectory>~/servers/java/bukkit/plugins/</outputDirectory>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>

  <repositories>
    ... 
  </repositories>

  <dependencies>
    ... 
  </dependencies>

</project>

当转到子项目中的任何 Java 源文件时,我收到以下错误: SOURCENAME.java is not on the classpath of project PROJECTNAME, only syntax errors are reportedJava(32)

如何将每个子项目的 src 目录添加到类路径中,这样它会报告编译错误?当我告诉 VSCode 报告编译错误时,所有内容都以红色突出显示,因为它找不到依赖项。

当我运行mvn compile package 时,它会成功编译子项目。只有 VSCode 在抱怨。

【问题讨论】:

    标签: java maven visual-studio-code


    【解决方案1】:

    在每个子项目中,还需要定义父项目。

    ...
      <parent>
        <groupId>nl.svenar.powerranks</groupId>
        <artifactId>powerranks</artifactId>
        <version>1.0</version>
      </parent>
    ...
    

    现在 VSCode 可以正常工作了。

    【讨论】:

      猜你喜欢
      • 2014-11-29
      • 1970-01-01
      • 1970-01-01
      • 2015-05-30
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 2013-11-25
      • 1970-01-01
      相关资源
      最近更新 更多