当前位置: 首页 > 面试题库 >

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

张成济
2023-03-14
问题内容

我在用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.


 类似资料:
  • 问题内容: 我在用Maven或Eclipse编译一些Scala时遇到问题,我尝试从Java jar导入一个包含名称空间和同名类的类。 我可以用编译。 例如,Java项目(jar)包含: 编译器抱怨: 在Scala 2.9.0.1(和)中使用Maven 3.0.03 / Eclipse 3.7.1 。 我遇到问题的jar是-它肯定包含几个实例,其中存在同名的名称空间和对象。 我正在尝试在Scala中

  • 问题内容: 如何在不同的程序包中访问两个具有相同名称的类? 和 所有这些都在同一个班级 谢谢。 问题答案: 您将必须导入另一个,您将编写完全合格的路径 例如在您的代码中:

  • 要抽象出来,请考虑以下示例: 我正在寻找一个断言方法,该方法在比较上述任何与时通过,但在比较上述任何与时失败。 目前,我最接近的是: 值得注意的是,以下操作也将失败,因为Apples虽然包含相同的值,但不是相同对象的实例: 在JUnit中有没有一种简单的方法来做出这样的断言?我知道我可以为对象的迭代编写一个自定义断言方法,但不知何故,这似乎是一个常见的用例,应该有一个预定义的断言方法,该方法会引发

  • 我想知道一个应用程序的包名,我只知道那个应用程序的应用程序名。假设我想知道一个电子邮件应用程序的包名,只是它的名字,然后如何得到它 我只知道应用程序名。 这是代码,以获得所有的应用程序的包名称,但我需要知道特定的应用程序。

  • 我最近制作了一个新应用程序,只有一个最小的存根Mainactive。当我使用Android Studio和gradle项目运行该应用程序时,该应用程序会失败并出现以下消息: 我检查了整个项目文件夹树,但在任何地方都找不到“myapp”这个词。这是我过去使用过的包名称,但后来更改了。我想知道这是从哪里来的?

  • 问题内容: 我有一个包含对象的数组。使用Objective-C,我可以使用以下命令对该数组进行排序: 我想知道是否有做相同的事情的Swift等效。对于Swift来说,这是相对较新的东西,它侵入了我的生活。 问题答案: 在Swift中使用本机类型。如果要与ObjC的旧代码交互,请使用以下命令: