Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我不能访问目标定义中的所有插件?_Java_Eclipse_Eclipse Plugin_Target Platform - Fatal编程技术网

Java 为什么我不能访问目标定义中的所有插件?

Java 为什么我不能访问目标定义中的所有插件?,java,eclipse,eclipse-plugin,target-platform,Java,Eclipse,Eclipse Plugin,Target Platform,关于Eclipse中的目标定义,我有一个问题。我想使用插件版本1.0.0,这是在我的目标平台定义,而我有插件项目在我的工作区版本1.0.2。对于我的目标定义中的所有其他插件,一切都如预期的那样工作(我看到了这一点,因为如果缺少某个插件,则会标记错误),但是这个特定的插件,Eclipse不适用于我的项目。只有插件版本1.0.2是可用的。插件未设置为单例 这是为什么?我如何解决这个问题 我发现,当我关闭包含错误版本的项目时,我可以访问正确的版本-但这很尴尬,还有其他方法吗 看起来这实际上不是一个

关于Eclipse中的目标定义,我有一个问题。我想使用插件版本1.0.0,这是在我的目标平台定义,而我有插件项目在我的工作区版本1.0.2。对于我的目标定义中的所有其他插件,一切都如预期的那样工作(我看到了这一点,因为如果缺少某个插件,则会标记错误),但是这个特定的插件,Eclipse不适用于我的项目。只有插件版本1.0.2是可用的。插件未设置为单例

这是为什么?我如何解决这个问题


我发现,当我关闭包含错误版本的项目时,我可以访问正确的版本-但这很尴尬,还有其他方法吗


看起来这实际上不是一个特定于eclipse的问题,当通过maven/tycho在命令行上构建时也会失败。具体来说,我的目标平台是Juno版本。是否有插件虽然是功能的一部分,但其他捆绑包无法使用?我知道插件就在那里,但tycho和Eclipse都不想让我使用它

也许我还应该说它在编译时失败了


正如我所说,虽然这个问题存在解决办法,但我仍然希望有一个“好”的解决方案来解决这个问题。您可以在以下位置将项目与目标定义一起签出:

您可能还需要先签出并构建此项目: git克隆

设置目标平台后,尝试使用Jayes 1.0.0(在目标平台中)而不是Jayes 1.0.2(在您的工作区中)构建一些东西。您也可以尝试使用maven进行构建,但它不起作用

已知的解决办法:

  • 关闭Jayes 1.0.2项目。然后,eclipse允许您使用Jayes 1.0.0
  • 要运行(OSGi)应用程序,您可以选择加载哪些捆绑包。您可以在此处手动选择版本1.0.0
  • 使用产品定义,您可以访问与解决方案2相同的运行时配置

  • 如果有人找到maven的解决方案,我很乐意知道。

    也许您已经将插件设置为singleton,因此只有一个具有特定id的捆绑包实例。 您可以通过删除MANIFEST.MF中的“singleton:=true”来改变这一点

    Bundle-SymbolicName: org.eclipse.xxx; singleton:=true
    

    或者,您可以在开始运行时从运行配置中删除1.0.2版本的插件。单击运行-->运行配置打开运行配置拨号,切换到“插件”选项卡,在这里您可以选择要使用的插件。

    我想您已经尝试了以下操作,但重新加载目标平台可能会有所帮助。
    另外,您的feature.xml文件为该插件的版本指定了什么?

    感谢您的提示,我澄清了关于您答案的问题。在运行配置中,对于只有main方法的类,我没有该选项卡。当我尝试添加依赖项时,也就是说,在我运行任何操作之前,问题也已经显示出来。顺便说一句,您的解决方法已添加到问题中。当我使用eclipse应用程序而不是普通的java主方法时,就会显示该选项卡。一般来说,这仍然不能解决问题,例如,当我想用maven自动化执行时,它指定了0.0.0。是的,我确实重新加载了目标平台,但事实上,正如我所写的,这甚至不是一个特定于eclipse的问题。很有趣(plugin-feature.xml版本),那么如果你想在那里指定你想要的版本呢?嗯,我真的不能在远程存储库中影响它(Juno版本…)。在本地,它允许我这样做,但它仍然将插件标记为不可用(奇怪的是,这个警告甚至在我关闭1.0.2项目时出现)您是否尝试过不导出更高版本的插件以强制eclipse获取更低版本的插件?首先,这不是特定于eclipse的,它在命令行maven上也会失败。其次,当我(i)使用运行配置来选择运行时(虽然还没有测试)有哪些插件时,(ii)关闭包含新版本的项目时,我认为它实际上在eclipse内部工作。这两个版本似乎都是特定于eclipse的(在我的feature.xml中,如果我显式地设置了1.0.0,它仍然抱怨该版本不可用)。我不喜欢那些变通的方法,我很难相信没有一种方法可以通过maven的“正常”方式实现我想要的。