eclipse-plugin - 产品中缺少片段
问题描述
我为我们的一个项目创建了一个本地化片段,它在从 IDE 启动时运行良好,但从导出的产品启动时则完全不行。
片段本身只有两个文件,一个MANIFEST.MF:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: L10N Fragment
Bundle-SymbolicName: org.acme.module.nl_xx;singleton:=true
Bundle-Version: 3.0.6.qualifier
Bundle-Vendor: ACME
Fragment-Host: org.acme.module;bundle-version="[1.0.0,2.0.0)"
Bundle-RequiredExecutionEnvironment: JavaSE-11
...和一个属性文件messages_de_de_xx.properties:
Special = Something
产品以-nl de_DE_XX
和开头-Djava.language=de -Djava.country=DE -Djava.variant=XX
。如前所述,它适用于 Eclipse,但不适用于完成的 EXE。
我试图调试/修复的事情:
- 确保导出的产品包含片段
- 确保build.properties / fragment JAR 包含上述两个文件
- 玩弄国家和变体(切换大小写)
- 清除 OSGi 实例区域(即应用程序首选项)
- 确保使用 OSGi 控制台解析片段
- 使用 en_UK_XX 的消息文件对其进行了测试(基于英语本地化而不是德语本地化)
- 确保文件configuration\org.eclipse.equinox.simpleconfigurator\bundles.info和artifacts.xml包含看起来对片段合理的内容
没有任何效果,所以我没有想法。
可能是什么问题呢?我可以做些什么来调试应用程序?
解决方案
这是一个令人难以置信的愚蠢问题。消息文件的名称应该是messages_de_DE_XX.properties(注意最后两段是大写的)。
我的猜测是从 IDE 启动时它可以工作,因为 Eclipse 使用文件系统,因此使用操作系统标准,即 Windows 的“忽略大小写”。
然而,当从成品开始时,文件位于 JAR 中,其中大小写很重要。
推荐阅读
- java - ExecutorService 和 Future 正在阻塞主线程
- ios - 使用 Audiokit v5 实现麦克风分析
- ios - UIBarButtonItem 隐藏元素和它占用的空间
- c# - Canvas ActualWidth 和 ActualHeight 以 MVVM 方式传入 ViewModel
- r - R - 查找第 2 组(对)的集群
- xamarin.forms - Xamarin.Forms 选中时禁用 Shell TabBar 字体缩放
- php - Laravel Eloquent 用于数据透视表,一个表有 2 个外键,另一个表有 1 个外键
- node.js - 如何使用 ejs 从 mongoDB 集合中提取文档,以便每个文档在浏览器上出现一次?
- python - 使用 asyncio.run() 时关闭 Asyncio 事件循环
- ms-access - 如何使用 MS Access 中的 SQL 查询将字段值增加 1