程序包包含对象和具有相同名称的程序包

我在用Maven或Eclipse编译一些Scala时遇到问题,我尝试从Java jar导入一个包含名称空间和同名类的类。

我可以用编译scalac

例如,Java项目(jar)包含:

src/foo/bar.java

src/foo/bar/some_resource.txt

-> foobar.jar

Scala project references foobar.jar

Foobartest.scala:

import foo.bar

class foobartest {

}

编译器抱怨:

package foo contains object and package with same name: bar 

one of them needs to be removed from classpath

在Scala 2.9.0.1(和maven-scala-plugin)中使用Maven 3.0.03 / Eclipse 3.7.1 。

我遇到问题的jar是jenkins-core-1.399.jar-它肯定包含几个实例,其中存在同名的名称空间和对象。

我正在尝试在Scala中编写Jenkins插件(我可以在Java中做到这一点,但由于我们所有的库都在scala中,所以我希望使用scala),这取决于使用Maven-

https://wiki.jenkins-ci.org/ display / JENKINS / Plugin +

tutorial。

回答:

SI-4695中概述了这种限制:在类文件存在的情况下,包装对象行为不当。

如SI-2089中所建议的(命名限制使某些jar无法使用),您可以尝试使用“ resolve-term-

conflict”,如变更集25145中实现的:

添加了一个-Y解决包和对象之间的名称空间冲突的选项。

这是一种钝器:如果人们有许多这样的冲突,需要以个体细微的方式解决,那么他们可能会走运。

val termConflict  = ChoiceSetting     ("-Yresolve-term-conflict", "strategy", "Resolve term conflicts", 113 List("package", "object", "error"), "error")

// Some jars (often, obfuscated ones) include a package and

// object with the same name. Rather than render them unusable,

// offer a setting to resolve the conflict one way or the other.

// This was motivated by the desire to use YourKit probes, which

// require `yjp.jar` at runtime. See SI-2089.

以上是 程序包包含对象和具有相同名称的程序包 的全部内容, 来源链接: utcz.com/qa/412597.html

回到顶部