在play-swagger
模塊,我們使用了play.routes.compiler.RoutesFileParser
讓所有註冊的路線從播放,並進一步把它解析到一個API文檔:以編程方式獲取Play中的路線!框架2.5.X
val parsedRoutes = RoutesFileParser.parse(new File(app.classloader.getResource(routesFile).toURI))
val routes = parsedRoutes.right.get.collect {
case (route: PlayRoute) => {
logger.debug(s"Adding route '$route'")
Seq(route.copy(path = route.path.copy(parts = StaticPart(prefix + "/") +: route.path.parts)))
}
case (include: PlayInclude) => {
logger.debug(s"Processing route include $include")
parseRoutesHelper(playRoutesClassNameToFileName(include.router), include.prefix)
}
}.flatten
這將導致以下錯誤: java.lang.NoClassDefFoundError: play/routes/compiler/RoutesFileParser
看起來RoutesFileParser
在Play中變成了私密! 2.5。
上述示例中提取所有播放路線的正確方法是什麼?
我檢查過RoutesFileParser的git歷史記錄,並沒有從2.4.0中找到任何重要的改變。該對象是公開的公共解析方法,該類是私有的,因爲它是用於播放2.4.0。 https://github.com/playframework/playframework/commits/master/framework/src/routes-compiler/src/main/scala/play/routes/compiler/RoutesFileParser.scala這不是你的問題的答案,但也許是問題在別處,缺少圖書館,錯誤的版本,... –