Intellij Idea 为什么JavaFX和RabbitMQ不能一起工作?

vmdwslir  于 2023-11-17  发布在  Java
关注(0)|答案(1)|浏览(182)

由于某些原因,JavaFX和RabbitMQ不想在项目中一起工作!当我添加了我的JavaFX库时,即使库也连接了,类也不能导入RabbitMQ方法。当我删除JavaFX库时,RabbitMQ工作得很好。这些只是不兼容还是我错过了一些关键的设置?
你可以在下面看到我的module-info.java文件:

  1. module org.example.demo {
  2. requires javafx.controls;
  3. requires javafx.fxml;
  4. opens org.example.demo to javafx.fxml;
  5. exports org.example.demo;
  6. }

字符串
我的pom.xml文件:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>org.example</groupId>
  7. <artifactId>demo</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <name>demo</name>
  10. <properties>
  11. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  12. <junit.version>5.10.0</junit.version>
  13. </properties>
  14. <dependencies>
  15. <dependency>
  16. <groupId>com.rabbitmq</groupId>
  17. <artifactId>amqp-client</artifactId>
  18. <version>5.20.0</version>
  19. </dependency>
  20. <dependency>
  21. <groupId>org.openjfx</groupId>
  22. <artifactId>javafx-controls</artifactId>
  23. <version>19.0.2</version>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.openjfx</groupId>
  27. <artifactId>javafx-fxml</artifactId>
  28. <version>19.0.2</version>
  29. </dependency>
  30. <dependency>
  31. <groupId>org.junit.jupiter</groupId>
  32. <artifactId>junit-jupiter-api</artifactId>
  33. <version>${junit.version}</version>
  34. <scope>test</scope>
  35. </dependency>
  36. <dependency>
  37. <groupId>org.junit.jupiter</groupId>
  38. <artifactId>junit-jupiter-engine</artifactId>
  39. <version>${junit.version}</version>
  40. <scope>test</scope>
  41. </dependency>
  42. </dependencies>
  43. <build>
  44. <plugins>
  45. <plugin>
  46. <groupId>org.apache.maven.plugins</groupId>
  47. <artifactId>maven-compiler-plugin</artifactId>
  48. <version>3.11.0</version>
  49. <configuration>
  50. <source>19</source>
  51. <target>19</target>
  52. </configuration>
  53. </plugin>
  54. <plugin>
  55. <groupId>org.openjfx</groupId>
  56. <artifactId>javafx-maven-plugin</artifactId>
  57. <version>0.0.8</version>
  58. <executions>
  59. <execution>
  60. <!-- Default configuration for running with: mvn clean javafx:run -->
  61. <id>default-cli</id>
  62. <configuration>
  63. <mainClass>org.example.demo/org.example.demo.MessengerApplication</mainClass>
  64. <launcher>app</launcher>
  65. <jlinkZipName>app</jlinkZipName>
  66. <jlinkImageName>app</jlinkImageName>
  67. <noManPages>true</noManPages>
  68. <stripDebug>true</stripDebug>
  69. <noHeaderFiles>true</noHeaderFiles>
  70. </configuration>
  71. </execution>
  72. </executions>
  73. </plugin>
  74. </plugins>
  75. </build>
  76. </project>

3xiyfsfu

3xiyfsfu1#

查找Rabbit MQ客户端模块名称

Rabbit amqp-client是一个automatic module,在amqp-client-5.20.0.jar文件的META-INF/MANIFEST.MF中定义了一个自动模块名。
它具有以下价值:

  1. Automatic-Module-Name: com.rabbitmq.client

字符串

module-info.java中需要Rabbit MQ客户端模块

要将amqp-client作为模块使用,您需要在module-info.java中要求此模块:

  1. requires com.rabbitmq.client;


因此,您的module-info.java将变为:

  1. module org.example.demo {
  2. requires javafx.controls;
  3. requires javafx.fxml;
  4. requires com.rabbitmq.client;
  5. opens org.example.demo to javafx.fxml;
  6. exports org.example.demo;
  7. }

模块路径设置信息

您还需要在模块路径上具有amqp-client.jar(及其传递依赖项)(这是使用java进程的-p--module-path VM参数完成的)。
当您使用最新版本的Maven进行构建时,Maven将理解这是一个模块化项目,并自动将所需的模块放置在模块路径上。一些现代IDE(如IntelliJ Idea)与Maven集成,以在IDE中定义项目并自动处理此类项目的模块路径定义。
通常,您不需要为javacjava进程手动设置模块路径。

展开查看全部

相关问题