我想從Java 8遷移到Java 9.當運行我的測試時,我得到一個關於javax.xml.bind.JAXBContext的CNFE。因此,「--add-modules java.xml.bind」似乎是必需的。我試圖擴展我的GRADLE_OPTS env變量,但錯誤依然存在。任何暗示是讚賞。JUnit 5,Java 9和Gradle:如何傳遞--add-modules?
4
A
回答
2
據艾倫·貝特曼,我添加了以下行build.gradle
,使gradle bootRun
也可以工作:
runtime('org.glassfish.jaxb:jaxb-runtime:2.3.0', 'javax.activation:activation:1.1.1')
4
您可以按照在遷移作爲gradle-building java9 modules說這是五個基本步驟: -
當轉換一個Java庫項目產生的Java 9模塊, 您也應五個轉變到讓你的項目。
添加描述該模塊的
module-info.java
。修改
compileJava
任務以生成模塊。修改
compileTestJava
任務以本地更改模塊。修改
test
任務以使用本地更改的模塊。(可選)爲所有其他項目添加
Automatic-Module-Name
清單條目。
在你的使用情況,您需要確保
compileTestJava {
inputs.property("moduleName", moduleName)
doFirst {
options.compilerArgs = [
'--module-path', classpath.asPath,
'--add-modules', 'org.junit.jupiter.api', // junit5 automatic module specific
'--add-modules', 'java.xml.bind' // jaxb specific
'--add-reads', "$moduleName=org.junit.jupiter.api", // allow junit to read your module
'--patch-module', "$moduleName=" + files(sourceSets.test.java.srcDirs).asPath, // add test source files to your module
]
classpath = files()
}
}
,然後執行測試,你就不需要UDPATE的test
任務,
test {
inputs.property("moduleName", moduleName)
doFirst {
jvmArgs = [
'--module-path', classpath.asPath,
'--add-modules', 'ALL-MODULE-PATH', // to resolve all module in the module path to be accessed by gradle test runner
'--add-reads', "$moduleName=org.junit.jupiter.api",
'--patch-module', "$moduleName=" + files(sourceSets.test.java.outputDir).asPath,
]
classpath = files()
}
}
備註:對於長期的解決方案,雖然我也建議你也遵循this answer中提到的重點。
相關問題
- 1. 如何在Gradle中使用JUnit 5?
- 2. 如何將外部類的值傳遞給@Nested @Test int JUnit 5?
- 3. Gradle - Java 9 - spring-data-ja
- 4. 如何在junit 5 gradle測試報告中捕獲stdout/stderr?
- 5. 使用gradle從intellij升級JUnit 4到JUnit 5
- 6. 如何使用Gradle運行JUnit測試?
- 7. Gradle:如何聲明傳遞依賴
- 8. Junit Mockito:如何傳遞參數:Arraylist,int值休息Junit API
- 9. 集成Sonar,Jacoco,Gradle,ScalaTest與Junit,Java
- 10. JUnit 5,將測試類的信息傳遞給擴展
- 11. Java 9 gradle不能找到javafx模塊
- 12. Jenkins Artifactory插件如何將解析器憑證傳遞給Gradle?
- 13. 如何從gradle運行Junit TestSuites?
- 14. 配置gradle使用JUnit,Mockito,Hamcrest和Espresso
- 15. Gradle構建不調用JUnit
- 16. JUnit的參數傳遞
- 17. 如何將Java代碼和Junit測試結合在一起構建Gradle
- 18. 如何將gradle build java項目上傳到聲納服務器
- 19. Java RMI:如何傳遞POJO
- 20. 傳遞數據5
- 21. JUnit 5與TestNG
- 22. Gradle Java和MongoDB
- 23. 如何遮蔽Gradle中的傳遞依賴項?
- 24. 如何在java中連接junit和tomcat?
- 25. 具有多個源組的Gradle中的JUnit 5
- 26. Junit的5 gradle這個插件沒有找到
- 27. 如何將命令行參數傳遞給gradle中的主類?
- 28. Java 9 - Spring 5&Jigsaw的REST - 可以嗎?
- 29. 將參數傳遞給TestNG運行 - Gradle
- 30. 如何從命令行將參數傳遞給gradle
你看看[如何表達對Java EE的功能過渡Maven中依賴於Java的9 ?](https://stackoverflow.com/questions/46084751/how-to-express-dependency-in-maven-on-java-ee-features-for-transition-to-java-9/46086920#46086920)?請你詳細說明你的設置。 – nullpointer
這是運行時失敗,而不是編譯問題。我使用Kotlin(不是Java)和Spring Boot。 @nullpointer:這是否意味着我只需要修改答案的第二部分? –
是的,只是測試執行階段,在這種情況下,應該是您所需的更改。 – nullpointer