Quarkus本地镜像构建失败

huangapple go评论116阅读模式
英文:

Quarkus native image build fails

问题

  1. 当我正在构建本地镜像时,我遇到了反射问题。
  2. > com.oracle.svm.hosted.substitute.DeletedElementException: 不支持的字段 java.lang.Class.newInstanceCallerCache 可达:声明此元素的类已被替换,但此元素在替换类中不存在。
  3. 如何修复?我的环境是 GraalVM 20 Zulu OpenJDK 11
  4. 我的 pom 文件:
  5. <?xml version="1.0" encoding="UTF-8"?>
  6. <project xmlns="http://maven.apache.org/POM/4.0.0"
  7. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  8. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  9. <modelVersion>4.0.0</modelVersion>
  10. <groupId>org.example</groupId>
  11. <artifactId>qd</artifactId>
  12. <version>0.0.1</version>
  13. <properties>
  14. <quarkus.version>1.3.0.Final</quarkus.version>
  15. <surefire.version>2.22.2</surefire.version>
  16. <mybatis.version>3.5.4</mybatis.version>
  17. <mybatis.cdi.version>1.1.1</mybatis.cdi.version>
  18. <kafka.version>2.4.1</kafka.version>
  19. <resteasy.version>4.5.3.Final</resteasy.version>
  20. <mongo.version>3.12.2</mongo.version>
  21. <testcontainer.version>1.13.0</testcontainer.version>
  22. </properties>
  23. <!-- 依赖管理 -->
  24. <dependencyManagement>
  25. <dependencies>
  26. <dependency>
  27. <groupId>io.quarkus</groupId>
  28. <artifactId>quarkus-bom</artifactId>
  29. <version>${quarkus.version}</version>
  30. <type>pom</type>
  31. <scope>import</scope>
  32. </dependency>
  33. </dependencies>
  34. </dependencyManagement>
  35. <!-- 依赖 -->
  36. <dependencies>
  37. <!-- 各种依赖 -->
  38. </dependencies>
  39. <!-- 构建配置 -->
  40. <build>
  41. <plugins>
  42. <!-- Quarkus 插件 -->
  43. <plugin>
  44. <groupId>io.quarkus</groupId>
  45. <artifactId>quarkus-maven-plugin</artifactId>
  46. <version>${quarkus.version}</version>
  47. <executions>
  48. <execution>
  49. <goals>
  50. <goal>build</goal>
  51. </goals>
  52. </execution>
  53. </executions>
  54. </plugin>
  55. <!-- 其他插件 -->
  56. </plugins>
  57. </build>
  58. <!-- 配置 profile -->
  59. <profiles>
  60. <profile>
  61. <id>native</id>
  62. <properties>
  63. <quarkus.package.type>native</quarkus.package.type>
  64. </properties>
  65. </profile>
  66. </profiles>
  67. </project>

注意:由于您要求只返回翻译后的内容,因此我只提供了代码部分的翻译,而省略了问题的答复部分。如果您还有其他问题,请随时提问。

英文:

When I am building a native image build I am facing an issue with reflection

> com.oracle.svm.hosted.substitute.DeletedElementException: Unsupported field java.lang.Class.newInstanceCallerCache is reachable: The declaring class of this element has been substituted, but this element is not present in the substitution class

How can I fix it? My environment GraalVM 20 and Zulu OpenJdk11

My pom

  1. &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
  2. &lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;
  3. xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
  4. xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&gt;
  5. &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
  6. &lt;groupId&gt;org.example&lt;/groupId&gt;
  7. &lt;artifactId&gt;qd&lt;/artifactId&gt;
  8. &lt;version&gt;0.0.1&lt;/version&gt;
  9. &lt;properties&gt;
  10. &lt;quarkus.version&gt;1.3.0.Final&lt;/quarkus.version&gt;
  11. &lt;surefire.version&gt;2.22.2&lt;/surefire.version&gt;
  12. &lt;mybatis.version&gt;3.5.4&lt;/mybatis.version&gt;
  13. &lt;mybatis.cdi.version&gt;1.1.1&lt;/mybatis.cdi.version&gt;
  14. &lt;kafka.version&gt;2.4.1&lt;/kafka.version&gt;
  15. &lt;resteasy.version&gt;4.5.3.Final&lt;/resteasy.version&gt;
  16. &lt;mongo.version&gt;3.12.2&lt;/mongo.version&gt;
  17. &lt;testcontainer.version&gt;1.13.0&lt;/testcontainer.version&gt;
  18. &lt;/properties&gt;
  19. &lt;dependencyManagement&gt;
  20. &lt;dependencies&gt;
  21. &lt;dependency&gt;
  22. &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
  23. &lt;artifactId&gt;quarkus-bom&lt;/artifactId&gt;
  24. &lt;version&gt;${quarkus.version}&lt;/version&gt;
  25. &lt;type&gt;pom&lt;/type&gt;
  26. &lt;scope&gt;import&lt;/scope&gt;
  27. &lt;/dependency&gt;
  28. &lt;/dependencies&gt;
  29. &lt;/dependencyManagement&gt;
  30. &lt;dependencies&gt;
  31. &lt;dependency&gt;
  32. &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
  33. &lt;artifactId&gt;quarkus-resteasy&lt;/artifactId&gt;
  34. &lt;/dependency&gt;
  35. &lt;dependency&gt;
  36. &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
  37. &lt;artifactId&gt;quarkus-arc&lt;/artifactId&gt;
  38. &lt;/dependency&gt;
  39. &lt;dependency&gt;
  40. &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
  41. &lt;artifactId&gt;quarkus-resteasy-jackson&lt;/artifactId&gt;
  42. &lt;/dependency&gt;
  43. &lt;dependency&gt;
  44. &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
  45. &lt;artifactId&gt;quarkus-flyway&lt;/artifactId&gt;
  46. &lt;/dependency&gt;
  47. &lt;dependency&gt;
  48. &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
  49. &lt;artifactId&gt;quarkus-agroal&lt;/artifactId&gt;
  50. &lt;/dependency&gt;
  51. &lt;dependency&gt;
  52. &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
  53. &lt;artifactId&gt;quarkus-config-yaml&lt;/artifactId&gt;
  54. &lt;/dependency&gt;
  55. &lt;dependency&gt;
  56. &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
  57. &lt;artifactId&gt;quarkus-smallrye-health&lt;/artifactId&gt;
  58. &lt;/dependency&gt;
  59. &lt;dependency&gt;
  60. &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
  61. &lt;artifactId&gt;quarkus-jdbc-postgresql&lt;/artifactId&gt;
  62. &lt;/dependency&gt;
  63. &lt;dependency&gt;
  64. &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
  65. &lt;artifactId&gt;quarkus-smallrye-reactive-messaging-kafka&lt;/artifactId&gt;
  66. &lt;/dependency&gt;
  67. &lt;dependency&gt;
  68. &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
  69. &lt;artifactId&gt;quarkus-smallrye-openapi&lt;/artifactId&gt;
  70. &lt;/dependency&gt;
  71. &lt;dependency&gt;
  72. &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
  73. &lt;artifactId&gt;quarkus-resteasy-jsonb&lt;/artifactId&gt;
  74. &lt;/dependency&gt;
  75. &lt;dependency&gt;
  76. &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
  77. &lt;artifactId&gt;quarkus-resteasy-mutiny&lt;/artifactId&gt;
  78. &lt;/dependency&gt;
  79. &lt;dependency&gt;
  80. &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
  81. &lt;artifactId&gt;quarkus-mongodb-client&lt;/artifactId&gt;
  82. &lt;/dependency&gt;
  83. &lt;dependency&gt;
  84. &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
  85. &lt;artifactId&gt;quarkus-smallrye-jwt&lt;/artifactId&gt;
  86. &lt;/dependency&gt;
  87. &lt;dependency&gt;
  88. &lt;groupId&gt;org.mybatis&lt;/groupId&gt;
  89. &lt;artifactId&gt;mybatis&lt;/artifactId&gt;
  90. &lt;version&gt;${mybatis.version}&lt;/version&gt;
  91. &lt;/dependency&gt;
  92. &lt;dependency&gt;
  93. &lt;groupId&gt;org.mybatis&lt;/groupId&gt;
  94. &lt;artifactId&gt;mybatis-cdi&lt;/artifactId&gt;
  95. &lt;version&gt;${mybatis.cdi.version}&lt;/version&gt;
  96. &lt;/dependency&gt;
  97. &lt;dependency&gt;
  98. &lt;groupId&gt;org.apache.kafka&lt;/groupId&gt;
  99. &lt;artifactId&gt;kafka-clients&lt;/artifactId&gt;
  100. &lt;version&gt;${kafka.version}&lt;/version&gt;
  101. &lt;/dependency&gt;
  102. &lt;!-- https://mvnrepository.com/artifact/io.jsonwebtoken/jjwt --&gt;
  103. &lt;dependency&gt;
  104. &lt;groupId&gt;io.jsonwebtoken&lt;/groupId&gt;
  105. &lt;artifactId&gt;jjwt&lt;/artifactId&gt;
  106. &lt;version&gt;0.9.1&lt;/version&gt;
  107. &lt;/dependency&gt;
  108. &lt;!-- to fix bug with reactive --&gt;
  109. &lt;dependency&gt;
  110. &lt;groupId&gt;org.jboss.resteasy&lt;/groupId&gt;
  111. &lt;artifactId&gt;resteasy-context-propagation&lt;/artifactId&gt;
  112. &lt;version&gt;${resteasy.version}&lt;/version&gt;
  113. &lt;/dependency&gt;
  114. &lt;dependency&gt;
  115. &lt;groupId&gt;org.mongodb&lt;/groupId&gt;
  116. &lt;artifactId&gt;mongo-java-driver&lt;/artifactId&gt;
  117. &lt;version&gt;${mongo.version}&lt;/version&gt;
  118. &lt;/dependency&gt;
  119. &lt;dependency&gt;
  120. &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
  121. &lt;artifactId&gt;quarkus-junit5&lt;/artifactId&gt;
  122. &lt;scope&gt;test&lt;/scope&gt;
  123. &lt;/dependency&gt;
  124. &lt;dependency&gt;
  125. &lt;groupId&gt;io.rest-assured&lt;/groupId&gt;
  126. &lt;artifactId&gt;rest-assured&lt;/artifactId&gt;
  127. &lt;scope&gt;test&lt;/scope&gt;
  128. &lt;/dependency&gt;
  129. &lt;/dependencies&gt;
  130. &lt;build&gt;
  131. &lt;plugins&gt;
  132. &lt;plugin&gt;
  133. &lt;groupId&gt;io.quarkus&lt;/groupId&gt;
  134. &lt;artifactId&gt;quarkus-maven-plugin&lt;/artifactId&gt;
  135. &lt;version&gt;${quarkus.version}&lt;/version&gt;
  136. &lt;executions&gt;
  137. &lt;execution&gt;
  138. &lt;goals&gt;
  139. &lt;goal&gt;build&lt;/goal&gt;
  140. &lt;/goals&gt;
  141. &lt;/execution&gt;
  142. &lt;/executions&gt;
  143. &lt;/plugin&gt;
  144. &lt;plugin&gt;
  145. &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
  146. &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
  147. &lt;version&gt;3.8.0&lt;/version&gt;
  148. &lt;configuration&gt;
  149. &lt;release&gt;
  150. 11
  151. &lt;/release&gt;
  152. &lt;/configuration&gt;
  153. &lt;/plugin&gt;
  154. &lt;plugin&gt;
  155. &lt;artifactId&gt;maven-surefire-plugin&lt;/artifactId&gt;
  156. &lt;version&gt;${surefire.version}&lt;/version&gt;
  157. &lt;configuration&gt;
  158. &lt;systemProperties&gt;
  159. &lt;java.util.logging.manager&gt;org.jboss.logmanager.LogManager&lt;/java.util.logging.manager&gt;
  160. &lt;/systemProperties&gt;
  161. &lt;/configuration&gt;
  162. &lt;/plugin&gt;
  163. &lt;plugin&gt;
  164. &lt;groupId&gt;org.jboss.jandex&lt;/groupId&gt;
  165. &lt;artifactId&gt;jandex-maven-plugin&lt;/artifactId&gt;
  166. &lt;version&gt;1.0.7&lt;/version&gt;
  167. &lt;executions&gt;
  168. &lt;execution&gt;
  169. &lt;id&gt;make-index&lt;/id&gt;
  170. &lt;goals&gt;
  171. &lt;goal&gt;jandex&lt;/goal&gt;
  172. &lt;/goals&gt;
  173. &lt;/execution&gt;
  174. &lt;/executions&gt;
  175. &lt;/plugin&gt;
  176. &lt;/plugins&gt;
  177. &lt;/build&gt;
  178. &lt;profiles&gt;
  179. &lt;profile&gt;
  180. &lt;id&gt;native&lt;/id&gt;
  181. &lt;properties&gt;
  182. &lt;quarkus.package.type&gt;native&lt;/quarkus.package.type&gt;
  183. &lt;/properties&gt;
  184. &lt;/profile&gt;
  185. &lt;/profiles&gt;
  186. &lt;/project&gt;

答案1

得分: 1

根据评论中的说明,移除非 Quarkus 的依赖项可能会有所帮助。

你的依赖项中也有一些可以替换为 Quarkus 等效库的库,例如 kafka-client。尝试用 Quarkus 等效库来替换它们。

以下是该库的链接:
https://mvnrepository.com/artifact/io.quarkus/quarkus-kafka-client

很难确定是哪个依赖项导致了问题,但我建议尝试替换可能的依赖项,如果问题仍然存在,你可以尝试移除剩余的依赖项。

英文:

As stated in the comments, removing non-quarkus dependencies can help.

There are also libraries in your dependencies which have a quarkus equivalent, for example kafka-client. Try substituting those with the quarkus equivalent.

Here a link to said library:
https://mvnrepository.com/artifact/io.quarkus/quarkus-kafka-client

It's hard to tell which dependency causes the problem excatly, but I would suggest to substitute the ones that are possible, and if the problem persists you can try removing the remaining dependencies.

huangapple
  • 本文由 发表于 2020年4月3日 22:18:12
  • 转载请务必保留本文链接:https://go.coder-hub.com/61013910.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定