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

Lombok未在中生成样板文件。类文件,找不到任何解决方案

汪耀
2023-03-14

我试图使用maven和hibernate创建一个模块化的javafx应用程序。昨天,我的module-info.java文件中出现了很多错误,所以我决定从头开始重新创建项目来隔离问题。

由于IDE找不到lombok生成的方法,项目无法编译。当我检查. class文件时,它没有任何自动生成的样板文件。当我没有module-info.java文件时,我不会有这个问题。

根据我在其他帖子中看到的关于lombok的一些建议,我已经确保在IntelliJ中启用了注释处理和lombok插件。当我加入龙目山时。jar到我在项目结构中的依赖项,模块信息。jar不编译,当我将光标放在“requires lombok”上时,intelliJ显示“模组引用不明确:lombok”。模块声明也用红色下划线,显示以下消息:“模块'AlienDB'从'lombok'和'lombok'读取包'lombok'。

这是我的pom.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>Aliens</groupId>
  <artifactId>AlienDB</artifactId>
  <version>1.0-SNAPSHOT</version>

  <name>AlienDB</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>9</maven.compiler.source>
    <maven.compiler.target>9</maven.compiler.target>
  </properties>

  <dependencies>


    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.8</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-core</artifactId>
      <version>5.4.3.Final</version>
    </dependency>

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.16</version>
    </dependency>



  </dependencies>

  <build>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>3.0.0-M1</version>
        </plugin>
        <plugin>
          <artifactId>maven-jar-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
        <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.7.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-project-info-reports-plugin</artifactId>
          <version>3.0.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

模块信息。java文件:


module AlienDB {

    requires lombok;
    requires java.persistence;
    requires org.hibernate.orm.core;
    requires java.naming;

    exports Aliens;
}

阿利恩1。JAVA

package Aliens;

import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;

@Data
@Entity (name = "alien2")
public class Alien1 {

    @Id
    @Column(name = "aID", nullable = false)
    private int aID;

    @Column(name = "aName")
    private String aName;


}

主要应用:

package Aliens;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;


public class App 
{
    public static void main( String[] args )

    {
        Configuration con = new Configuration().configure().addAnnotatedClass(Alien1.class);
        ServiceRegistry reg = new StandardServiceRegistryBuilder().applySettings(con.getProperties()).build();
        SessionFactory sf = con.buildSessionFactory(reg);

        Session session = sf.openSession();
        Transaction tx = session.beginTransaction();

        Alien1 alienName = session.get(Alien1.class, 1);
        //System.out.println(alienName.getAName());

        tx.commit();

        session.close();
        sf.close();
    }
}

当我运行应用程序,如上所示,与lombok jar添加到依赖项,我得到以下错误:

初始化启动层java时出错。lang.module。ResolutionException:模块lombok不读取导出组织的模块。mapstruct。美联社。spi

当我移走龙目山时。jar来自项目结构中的依赖项,模块信息。jar没有显示任何错误,但我得到以下错误:

初始化启动层java时出错。lang.module。FindException:未找到模块lombok,AlienDB要求

在这两种情况下,当我取消打印行语句的注释时,我会得到以下方法,大概是因为Lombok无法生成样板文件:

错误:(24,37)java:找不到符号:方法getAName()位置:类型为的变量alienName。Alien1

模块结构:

C:.
├───.idea
├───src
│   ├───main
│   │   ├───java
│   │   │   └───Aliens
│   │   └───resources
│   └───test
│       └───java
│           └───Aliens
└───target
    ├───classes
    ├───generated-sources
    │   └───annotations
    ├───generated-test-sources
    │   └───test-annotations
    ├───maven-archiver
    ├───maven-status
    │   └───maven-compiler-plugin
    │       ├───compile
    │       │   └───default-compile
    │       └───testCompile
    │           └───default-testCompile
    ├───surefire-reports
    └───test-classes
        ├───Aliens
        └───META-INF

我使用的是intelliJ ultimate 2019.1 SDK,java 11语言级别设置为9。

编辑:我也曾尝试在Eclipse上运行它,但我也遇到了同样的问题——没有生成Lombok方法,即使它们在建议框中显示为有效的建议。

共有1个答案

池俊茂
2023-03-14

我设法通过添加以下我的pom.xml文件来解决这个问题。

 <configuration>
            <source>9</source>
            <target>9</target>
            <annotationProcessorPaths>
              <annotationProcessorPath>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.8</version>
              </annotationProcessorPath>
            </annotationProcessorPaths>
          </configuration>

 类似资料:
  • 我下载并反编译了minecraft插件的jar文件,并通过创建一个新的java项目Import将其添加到eclipse中 这导致了: 之后,我更改了一行代码,然后尝试导出它。 我不知道我该怎么做来解决这个问题。请帮忙。

  • 问题内容: 在IntelliJ中,当我尝试编译时出现此奇怪的错误。 我知道,问题出在哪里很明显,但是花了太多时间在这个问题上,我现在把信任交给您! 我使用ideaCommunity-9,在其中为JBoss创建了一个全局库,其中包含所有JBoss jar,包括ejb3-persistence.jar。我的模块包含此库,并且已将其移至依赖关系的顶部。在类路径中,没有其他地方有javax.persist

  • 我试图通过Django制作一个新网站的主页。我的应用程序名称是“博客”,主页是home.html当我去http://127.0.0.1:8000/blog/home/时,我仍然收到错误模板不存在 我确保在settings.py中将“blog”添加到我的模板中,并在主目录中以及通过blog/templates/blog/home.html添加文件夹模板 myproject/blog/views.py

  • 在彻底搜索了这些论坛寻找答案后,我找不到一个类似于我的案例。 在使用maven生成WAR filer并部署我的服务器之后,每次我向需要创建DAO的API发送GET请求时,我都会在服务器控制台收到以下警告: 在类路径中找不到任何meta-inf/persistence.xml文件 和以下例外情况: 没有名为mim_ajuda的EntityManager的持久性提供程序 在进一步讨论之前,我已经搜索了

  • 我试图使用WildFly和Maven运行一个简单的EJB示例,但却停留在我应该创建一个持久性单元的阶段。因此,我创建了一个PostgreSQL数据库,配置了Wildfly数据源并编写了一个persistence.xml文件。但WAR似乎从不包含persistence.xml,所以每次尝试创建EntityManager时,我都会从Wildfly获得以下信息和错误: 11:55:57,664信息[or

  • 目前在maven resources插件中有一个bug。gitignore文件不会复制到原型JAR。看到这个错误报告了吗 简短而简单的问题:在原型中获取文件有变通方法吗? 编辑:将maven resources插件版本设置为2.6并不能解决我的问题(就像这里提到的)