gpt4 book ai didi

java - 无法找到如何将相同的conf文件放置在不同产品中的解决方案

转载 作者:行者123 更新时间:2023-12-01 23:53:04 31 4
gpt4 key购买 nike

我的 Eclipse 工作区有一个特定问题。

该项目是一个带有 JavaFx UI 的 OSGi 项目。有 bundle ,我从这些 bundle 中制作了 3 个功能。我有 2 个具有这些功能的产品。其中一个功能是核心功能,另外两个功能对某些 bundle 有不同的实现。那么我的产品各有两个特点。正如您猜测的那样,product-1 具有 core 和 impl-1 功能,product-2 具有 core 和 impl-2 功能。

好的,但还没有,请提供更多解释,以便我可以提出我的问题:)这些具有不同实现的功能具有不同的工作目录,因为它们需要不同的 native 库来运行。

这是基本的项目设置:

project
|
+---core
|   |  
|   +---plugin.api
|   +---plugin.impl.1
|   +---plugin.impl.2
|                  
+---external
|   |  
|   +---working_dir_1 (only for product 1)
|   |   |   aaaa1.dll
|   |   |   aaaa2.so
|   |
|   +---working_dir_2 (only for product 2)
|   |   |   bbbb1.dll
|   |   |   bbbb2.dll
|   |   |   bbbb3.so
|   |   |   bbbb4.so
|   |   
|   +---config  (shared)
|   |   +---Database
|   |   +---Log
|   |   +---Theme
|   |   +---conf1
|   |   +---conf2
|   |   +---conf3
|   |   \---conf4
|                  
+---features
|   +---core.feature
|   +---core.1.feature
|   \---core.2.feature
|              
+---products
|   +---product.1
|   +---product.2
|                  
+---releng
|   +---project.configuration
|   \---project.target
|
+---tests

如您所见,上面的应用程序可以通过到达父文件夹来使用conf文件。在java中它就像这样:

System.getProperty("user.dir") + File.separator + ".." + File.separator + CONFIGURATION_FOLDER_NAME;

这没关系。我和我团队中的每个人只需单击一下即可运行所选产品。我喜欢这个项目设置。

哦,我添加了第谷标签,但从未提及过它。我们还使用 tycho 来自动构建我们的项目。有了它我们就可以有 4 种产品。每个产品 1 和产品 2 的 Win 和 Linux 可运行程序。在构建和具体化产品时,第谷复制需要 native 库和配置文件。但是,当复制配置文件时,第谷会将它们放置在所创建产品的工作目录中。因此应用程序无法找到conf文件,因为它在物化产品的父文件夹中查找conf文件。

这就是我现在的问题。当我想用 tycho 构建时,我必须将上面的代码更改为:

System.getProperty("user.dir") + File.separator + CONFIGURATION_FOLDER_NAME;

我该如何解决这个问题?我们正在 Windows 10 上进行开发,并使用前面提到的 Eclipse 和 tycho。

我不想增加配置,因为每次更改两个文件会很麻烦。

我尝试使用符号链接(symbolic link)将conf文件夹链接放置在工作目录中。它确实有效,但当每个人都拉动时,链接就不起作用了。我猜想 Windows 上的符号链接(symbolic link)在不同的计算机上不起作用。

只要能解决问题我就可以改变项目结构。

注意:配置包括可由非开发人员更改的应用程序级别配置(例如仅打开文件并将属性从 true 更改为 false)。这就是为什么我们没有将它们捆绑在一起。如果不是这种情况,所有 bundle 都将在各自的 bundle 资源或片段中具有相关的配置。

最佳答案

您可以将配置放入包中,并添加Bundle-Shape: dir,然后您可以通过独立于实际位置的包类加载器读取配置文件。

关于java - 无法找到如何将相同的conf文件放置在不同产品中的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58214487/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com