问题描述
首先,希望大家安全健康,感谢您的进步。
我和我的朋友们仍在学习Java并使用JavaFX启动Maven项目,现在我们也在学习休眠框架,我们希望将其与JavaFX一起使用,但是存在一个无法解决的问题。
(我已经搜索并阅读了有关此类主题的信息,但我认为我的问题没有答案。对此感到抱歉。)
首先,我们使用唯一的JavaFx启动了该项目,该项目是用于Cinema预订的应用程序,我负责该项目的登录部分。在休眠之前,在对信息进行加密之后,我将它们存储在文件中,并且一切工作正常。休眠之后,我尝试创建一个本地数据库并将其合并以存储所有信息,但是当我为休眠创建一个module-info.java时,出现一个错误,其中提到其他fx库需要在module-info.java中提及,然后我也在其中添加了它们,并从pom.xml中删除了,因为要从2个地方读取相同的库。
关于我正在做的事情的问题如下;
-我是否在模块-info.java或pom.xml的用法上犯了逻辑错误 -如果两者都可以在同一个项目中,该怎么办 -实现休眠的最有效方法是什么? -这种应用程序应该使用多模块实现吗?
这是我的pom.xml和module-info.java; 带有module-info.java的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>be.javaHeverlee</groupId>
<artifactId>CinemaApplication</artifactId>
<version>1.0-SNAPSHOT</version>
<name>cinemaBookingSystem</name>
<description>starter project for javaFX</description>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>11</java.version>
<javafx.version>13.0.1</javafx.version>
<hibernate.version>5.4.10.Final</hibernate.version>
<MysqL.version>8.0.19</MysqL.version>
</properties>
<dependencies>
<!-- LOMBOK -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
<version>1.18.12</version>
</dependency>
<!-- JAVA FX -->
<!-- JFOENIX -->
<dependency>
<groupId>com.jfoenix</groupId>
<artifactId>jfoenix</artifactId>
<version>9.0.0</version>
</dependency>
<!-- DATABASE -->
<dependency>
<groupId>MysqL</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${MysqL.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence-api</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>2.4.1</version>
</dependency>
<!-- FONT_AWESOME -->
<dependency>
<groupId>de.jensd</groupId>
<artifactId>fontawesomefx</artifactId>
<version>8.1</version>
</dependency>
<dependency>
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<executions>
<execution>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>be.javaHeverlee.cinemaBookingSystem.Main</mainClass>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>be.javaHeverlee.cinemaBookingSystem.Main</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
和module-info.java:
open module CinemaApplication {
requires lombok;
requires org.hibernate.orm.core;
requires java.sql;
requires net.bytebuddy;
requires java.xml.bind;
requires com.fasterxml.classmate;
requires javafx.graphics;
requires javafx.fxml;
requires javafx.media;
requires javafx.controls;
requires java.desktop;
requires com.jfoenix;
requires java.prefs;
requires java.persistence;
}
我的文件夹:
根据我的研究,我可以在更改maven> runner>后选择“ Delaget IDE构建/运行Maven操作”来运行。 但仍存在Maven问题,无法正确构建或安装(mvn clean安装或mvn clean编译)。
如果我取消选择maven> runner>“ Delaget IDE构建/运行Maven的操作”,然后尝试重建并运行该错误:
@R_225_4045@ion:java: compiler message file broken: key=compiler.misc.msg.bug arguments=11.0.6,{1},{2},{3},{4},{5},{6},{7}
@R_225_4045@ion:java: java.lang.module.ResolutionException: Module lombok does not read a module that exports org.mapstruct.ap.spi
@R_225_4045@ion:java: at java.base/java.lang.module.Resolver.resolveFail(Resolver.java:885)
@R_225_4045@ion:java: at java.base/java.lang.module.Resolver.checkExportsuppliers(Resolver.java:760)
@R_225_4045@ion:java: at java.base/java.lang.module.Resolver.finish(Resolver.java:362)
@R_225_4045@ion:java: at java.base/java.lang.module.Configuration.<init>(Configuration.java:141)
@R_225_4045@ion:java: at java.base/java.lang.module.Configuration.resolveAndBind(Configuration.java:495)
@R_225_4045@ion:java: at java.base/java.lang.module.Configuration.resolveAndBind(Configuration.java:299)
@R_225_4045@ion:java: at jdk.compiler/com.sun.tools.javac.file.JavacFileManager.getServiceLoader(JavacFileManager.java:985)
@R_225_4045@ion:java: at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
@R_225_4045@ion:java: at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
@R_225_4045@ion:java: at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
@R_225_4045@ion:java: at java.base/java.lang.reflect.Method.invoke(Method.java:566)
@R_225_4045@ion:java: at org.jetbrains.jps.javac.JavacMain$8.invoke(JavacMain.java:387)
@R_225_4045@ion:java: at com.sun.proxy.$Proxy17.getServiceLoader(UnkNown Source)
@R_225_4045@ion:java: at com.sun.proxy.$Proxy18.getServiceLoader(UnkNown Source)
@R_225_4045@ion:java: at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.initProcessorLoader(JavacProcessingEnvironment.java:261)
@R_225_4045@ion:java: at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.<init>(JavacProcessingEnvironment.java:237)
@R_225_4045@ion:java: at jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.instance(JavacProcessingEnvironment.java:193)
@R_225_4045@ion:java: at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.initProcessAnnotations(JavaCompiler.java:1136)
@R_225_4045@ion:java: at jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:922)
@R_225_4045@ion:java: at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.lambda$doCall$0(JavacTaskImpl.java:104)
@R_225_4045@ion:java: at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.handleExceptions(JavacTaskImpl.java:147)
@R_225_4045@ion:java: at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:100)
@R_225_4045@ion:java: at jdk.compiler/com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:94)
@R_225_4045@ion:java: at org.jetbrains.jps.javac.JavacMain.compile(JavacMain.java:207)
@R_225_4045@ion:java: at org.jetbrains.jps.incremental.java.JavaBuilder.compileJava(JavaBuilder.java:486)
@R_225_4045@ion:java: at org.jetbrains.jps.incremental.java.JavaBuilder.compile(JavaBuilder.java:338)
@R_225_4045@ion:java: at org.jetbrains.jps.incremental.java.JavaBuilder.dobuild(JavaBuilder.java:263)
@R_225_4045@ion:java: at org.jetbrains.jps.incremental.java.JavaBuilder.build(JavaBuilder.java:216)
@R_225_4045@ion:java: at org.jetbrains.jps.incremental.IncProjectBuilder.runModuleLevelBuilders(IncProjectBuilder.java:1328)
@R_225_4045@ion:java: at org.jetbrains.jps.incremental.IncProjectBuilder.runBuildersForChunk(IncProjectBuilder.java:1006)
@R_225_4045@ion:java: at org.jetbrains.jps.incremental.IncProjectBuilder.buildTargetsChunk(IncProjectBuilder.java:1073)
@R_225_4045@ion:java: at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunkIfAffected(IncProjectBuilder.java:967)
@R_225_4045@ion:java: at org.jetbrains.jps.incremental.IncProjectBuilder.buildChunks(IncProjectBuilder.java:796)
@R_225_4045@ion:java: at org.jetbrains.jps.incremental.IncProjectBuilder.runBuild(IncProjectBuilder.java:378)
@R_225_4045@ion:java: at org.jetbrains.jps.incremental.IncProjectBuilder.build(IncProjectBuilder.java:178)
@R_225_4045@ion:java: at org.jetbrains.jps.cmdline.buildrunner.runBuild(buildrunner.java:140)
@R_225_4045@ion:java: at org.jetbrains.jps.cmdline.BuildSession.runBuild(BuildSession.java:297)
@R_225_4045@ion:java: at org.jetbrains.jps.cmdline.BuildSession.run(BuildSession.java:130)
@R_225_4045@ion:java: at org.jetbrains.jps.cmdline.BuildMain$MyMessageHandler.lambda$channelRead0$0(BuildMain.java:232)
@R_225_4045@ion:java: at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
@R_225_4045@ion:java: at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
@R_225_4045@ion:java: at java.base/java.lang.Thread.run(Thread.java:834)
@R_225_4045@ion:java: Errors occurred while compiling module 'CinemaApplication'
@R_225_4045@ion:javac 11.0.6 was used to compile java sources
@R_225_4045@ion:16/08/2020,01:28 - Build completed with 1 error and 0 warnings in 1 s 480 ms
Error:java: Compilation Failed: internal java compiler error
IntelliJ Ultimate Edition, MacOs Catalina, Java 11。
谢谢大家
亲切的问候。
解决方法
您需要将mapstruct-processor依赖项添加到您的项目中才能解决此问题 将此添加到您的依赖项
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.3.1.Final</version>
</dependency>
并将其保存到您的module-info.java
requires org.mapstruct.processor;
快乐的编码...:)