我have a test failure由于来自IllegalStateException
的{{1}}调用Platform.getPlugin("...")
@Deprecated
,{#1}}仅在安装了兼容性层时才有效不得另行使用。"
此测试在开发期间在工作空间中工作,但在Maven Tycho Surefire运行时失败(可重现)。我收集到这与org.eclipse.core.runtime.Platform.getPluginRegistry()
有关,所以试图在org.eclipse.core.runtime.compatibility
中执行此操作:
pom.xml
不幸的是,即使这个(上面)它仍然不起作用 - 我做错了什么?
作为替代方法解决此问题的答案,我想我可以尝试在测试中调整该行以使用另一个API而不是这个被弃用的<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-surefire-plugin</artifactId>
<version>${tycho-version}</version>
<configuration>
...
<dependencies>
<dependency>
<type>p2-installable-unit</type>
<artifactId>org.eclipse.core.runtime.compatibility</artifactId>
</dependency>
</dependencies>
<bundleStartLevel>
<bundle>
<id>org.eclipse.core.runtime.compatibility</id>
<level>4</level>
<autoStart>true</autoStart>
</bundle>
</bundleStartLevel>
</configuration>
- 但是如何获得org.eclipse.core.runtime。插件是否给出了ID而没有使用任何需要此兼容性层的弃用API,这导致我在这里出现问题?
答案 0 :(得分:1)
实际上只是Platform.getBundle()
代替Platform.getPlugin()
就可以了。
另外,为了防止其他任何人遇到这种情况,额外的依赖配置确实有效 - 它在我的特定测试用例中导致了另外一个无关的IllegalStateException,这引起了我的困惑。