我在使用 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
将 Maven 3.0.03/Eclipse 3.7.1 与 Scala 2.9.0.1(以及maven-scala-plugin
).
我遇到问题的罐子是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:
Added a -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.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)