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

如何解决gradle compileJava运行中相关子项目中“找不到符号错误”的问题

淳于博文
2023-03-14

我尝试使用不同层(web、业务、dataAccess、common)的子项目创建一个带有gradle的spring boot项目。

我按照官方分级指南的指示创建多项目构建。

这两个子项目最初都是用Spring.io创建的。

问题

我尝试使用在其他子项目DataAccess中常见的子项目的user类。import在Intellij中运行良好。但是,当我运行gradlew:dataaccess:compileJava时,任务失败,因为找不到user:

任务:DataAccess:CompileJava失败...\DataAccess\src\main\Java\ch\wproglk\myproject\backend\DataAccess\myprojectDataApplication.Java:23:错误:找不到符号用户u=new User();^符号:class用户位置:class MyProjectDataApplication)

common项目在dataAccess项目之前进行编译。我想这是一个分级配置问题,dataAccess项目在编译时不了解公共项目(也许是类路径问题?)。我很高兴有任何帮助。多谢了。

项目设置

  • 我的项目
    • 通用
      • src/main//ch/wproglk/myproject/backend/common/entities
        • user.java
        • src/main/Java/ch/wproglk/myproject/backend/dataaccess
          • AcludataApplication.java

          代码

          MyProject/Build.Gradle

          plugins {
              id 'org.springframework.boot' version '2.1.8.RELEASE'
              id 'io.spring.dependency-management' version '1.0.8.RELEASE'
              id 'java'
          }
          
          group = 'ch.wprogLK'
          version = '0.0.1-SNAPSHOT'
          sourceCompatibility = '1.8'
          
          repositories {
              mavenCentral()
          }
          
          allprojects {
              apply plugin: 'java' 
          }
          
          dependencies {
              implementation 'org.springframework.boot:spring-boot-starter-web'
          }
          

          MyProject/Settings.Gradle

          rootProject.name = 'MyProject'
          
          include 'common'
          include 'dataAccess'
          

          MyProject/Common/Build.Gradle

          plugins {
              id 'org.springframework.boot'
              id 'io.spring.dependency-management'
              id 'java'
          }
          
          group = 'ch.wprogLK'
          version = '0.0.1-SNAPSHOT'
          sourceCompatibility = '1.8'
          
          repositories {
              mavenCentral()
          }
          
          dependencies {
          }
          

          MyProject/Common/Settings.Gradle

          rootProject.name = 'common'
          

          myproject/common/src/main/Java/ch/wproglk/myproject/backend/common/entities/user.Java

          package ch.wprogLK.myProject.backend.common.entities;
          public class User
          {
              private Long userId;
              private String username;
          }
          

          MyProject/DataAccess/Build.Gradle

          plugins {
              id 'org.springframework.boot'
              id 'io.spring.dependency-management'
              id 'java'
          }
          
          group = 'ch.wprogLK'
          version = '0.0.1-SNAPSHOT'
          sourceCompatibility = '1.8'
          
          repositories {
              mavenCentral()
          }
          
          dependencies {
              compile project(":common")
          }
          

          MyProject/DataAccess/Settings.Gradle

          rootProject.name = 'dataAccess'
          

          MyProject/DataAccess/src/main/Java/ch/wproglk/MyProject/Backend/DataAccess/MyProjectDataApplication.Java

          package ch.wprogLK.myProject.backend.dataAccess;
          import ch.wprogLK.myProject.backend.common.entities.User;
          import org.springframework.boot.SpringApplication;
          import org.springframework.boot.autoconfigure.SpringBootApplication;
          @SpringBootApplication
          public class MyProjectDataApplication 
          {
              public static void main(String[] args)
              {
                  SpringApplication.run(MyProjectDataApplication.class, args);
              }
          
              public MyProjectDataApplication()
              {
                  User u = new User(); //This line is the problem when running gradle :dataAccess:javaCompile
              }
          }
          

共有1个答案

包修贤
2023-03-14

缺少设置两个配置以指示common是库。因此,添加以下配置,并从项目根目录添加compilerun

通用Build.Gradle

bootJar {
    enabled = false
}

jar {
    enabled = true
}
 类似资料:
  • 我尝试使用不同层(Web,业务,数据访问,公共)的子项目创建一个带gradle的Spring启动项目。 我按照gradle官方指南的指示创建多项目构建。 这两个子项目最初都是用Spring.io. 问题 我尝试在我的其他子项目dataAccess中使用子项目的类。导入在Intellij中运行良好。但是,当我运行时,任务失败,因为找不到: 任务:数据访问:compileJava失败。。。\dataA

  • 我在TextBoxBinding.java中得到以下错误

  • 我得到了这两个错误。错误:找不到或加载主类骰子生成项目错误:找不到符号 我的文件保存为Dice.java.我检查了,因为这是我最后一个程序的问题之一。至于符号错误,我不确定。 公共类骰子{ //掷骰子。 扫描仪键盘=新扫描仪(System.in); 这只是源代码的一部分。

  • 这是一个非常简单的网页抓取程序,我用intellij的想法和maven构建系统构建的。它在今天之前工作得很好,但是当我今天试图构建它的时候,它给了我对象没有找到基本java对象的错误,比如字符串和列表。当我试图重新加载maven项目时,我得到了下面的另一个错误。idea也用红色突出了基本的java对象,没有给出任何建议。我做的唯一一件事是稍微修改了java源代码。所以,我用股票你好世界代码进行了测

  • 这里有一个类似的答案:如何在Java中将函数作为参数传递? 但提供的正确答案不起作用。我有一门课: 在函数内部我试图将传递到,但我得到的错误是: 找不到符号 符号:类Callable 我不知道为什么。 另外,我尝试使用返回类型字符串作为xMethod,您能传递一个返回类型不同的函数吗?

  • 我在我的类上收到三条错误消息,它说在、和上找不到符号。我该如何解决这个问题?我试图在对话框中打印出来,但这三个是唯一不起作用的。