我是被“遗弃”的开源Java应用程序的新维护者。最初,该应用程序仅适用于Windows用户,我尝试建立OSX端口,但遇到问题

有一个包含翻译(属性)文件的文件夹。
首次启动时,该应用会列出资源文件夹中的所有属性文件,并从中列出一个列表。然后,用户可以从该列表中选择应用程序语言。

到目前为止,该应用程序仅受Windows支持,并且由于资源文件夹未 bundle 在Jar中而运行良好。
OSx应用程序将应用程序jar中的所有资源文件夹 bundle 在一起,并且现有代码无法正常工作。我找不到一种方法来扫描位于jar中的资源文件夹。

我想知道是否有人可以帮助我找到解决方法或使我适应另一种方法:

  • 可能在构建时将可用语言列表保存在专用文件中。我猜它可以通过Gradle自动化。
  • 对可用语言列表进行硬编码(不是很干净,如果在添加或删除属性文件时忘记更新列表,则不是很干净,并且会崩溃)
  • 找到一种方法来恢复jar内 bundle 的扫描或文件夹

  • 我正在使用Gradle作为构建系统

    最佳答案

    我终于选择了选项1,执行下面的任务以在配置文件中列出可用的语言。
    然后,我的Java代码在执行时只需读取配置文件。

    task createLanguageFileList()  {
    
        def lTranslationFiles = []
        fileTree(dir: "${projectDir}\\src\\main\\resources\\translations", include: '**/*.properties').visit {
            FileVisitDetails details -> lTranslationFiles << details.file.name
        }
    
        doLast {
                lTranslationFiles = lTranslationFiles.collect { it.take(it.lastIndexOf('.'))}
                println lTranslationFiles
                File lstFile = new File("${projectDir}\\src\\main\\resources\\translations\\ListLanguages.txt")
                lstFile.withWriter{ out -> lTranslationFiles.each {out.println it}
               }
    }
    

    关于java - 动态列出位于JAR中的可用翻译文件的最佳方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52992485/

    10-09 05:49
    查看更多