【问题标题】:Java package does not compile but some classes in that package can be used by other projectsJava 包无法编译,但该包中的某些类可以被其他项目使用
【发布时间】:2013-03-15 12:29:32
【问题描述】:

我对 Java 很陌生(但有多年的 C#.NET 经验)。

是否存在 Java/JRE 和 C#/.NET 之间最重要差异的比较?

在 Java“解决方案”中发现了“奇怪”行为。我的工作区中有几个项目。其中一个包无法编译。但是这个包还包含其他项目使用的类,没有问题。

所以在我看来,即使一个类没有在包中编译,该包中的其他类也可以被其他项目使用?

包是否可以与 .NET 中的程序集 (.dll) 相媲美?在 .NET 中,当类无法编译时,不会生成 .dll。

对我来说另一个奇怪的事情是 .class 文件也被检入源代码控制系统。也许这就是为什么可以使用从不可编译包中分类的原因。将 .class 文件签入源代码管理真的有意义吗?

【问题讨论】:

  • 听起来这个问题确实与您的环境有关。不,将 .class 文件签入源代码管理并不常见。至于非编译源 - 好吧,这取决于您使用的编译器。 Eclipse 将允许您为损坏的类生成类文件。
  • 对于以后的问题,请一次只问一个问题。 SO 问题之间的链接很好,但是一个 SO 问题应该只包含一个问题。 (想象一下,如果有人只回答了您的第 1 和第 2 个问题,但未回答第 3 个问题 - 如果您接受答案,未来的访问者可能看不到第 3 个子问题仍然打开,如果您不接受它,前两个子问题的答案似乎不正确或不满意。)
  • 感谢您的回复!好吧,你是对的!我有一个巨大的 Java 遗留项目,一开始我很难区分与该特殊项目相关的内容以及与 Java 世界相关/通常与/在 Java 世界中相关的内容。我保证我将来会做得更好;-)

标签: c# java


【解决方案1】:

我正在做相反的事情,学习 C# 并有一些 java 经验。我会说 java 中的包与 .NET 中生成的 .dll 文件有点不同。 java中的包被编译成单独的类文件。因此,如果一个 java 源文件没有在包中编译,您可以使用在该包中编译的其他类(只要您正在使用的其他类之一不需要未编译的类)。我会说将 .class 文件签入源代码管理是没有意义的。我只是检查 java 源文件。

您可能想查看包生成的文件夹结构,这将使您了解正在输出的内容。通常,如果您的包是 com.mycompany.myapp,则它的工作原理是这样的,那么您将拥有 com/mycompany/myapp 的文件夹结构,并且在 myapp 文件夹中,您将看到类文件。我相信其他人可以提供更多详细信息,但我希望这对您有所帮助。

【讨论】:

  • 非常感谢,回答了我关于无法完全编译的包的“类/方法”可以被另一个项目使用的问题。
【解决方案2】:

将 .class 文件签入源代码管理真的有意义吗?

一般来说,源代码控制是针对源代码和编译过程的其他输入的共识。有时您可能想要包含依赖项(例如 3rd 方 dll),但很少有充分的理由包含您自己的输出文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-05
    • 2015-11-10
    • 2018-05-07
    • 2013-09-21
    • 1970-01-01
    相关资源
    最近更新 更多