Java 用不同的罐子跑?

Java 用不同的罐子跑?,java,jar,dependencies,Java,Jar,Dependencies,我来自.net世界。我记得,如果您使用一个dll构建,但在运行时提供另一个dll,.net会立即抱怨 我现在向我的项目添加一些hadoop参考,并找到以下文章 我只是不明白这是怎么发生的 Java可以用一个jar构建,但可以用另一个jar运行 谢谢是的。API通常就是这样(您编译API,但在运行时可以使用API的较新版本运行,该版本可能包含在实现中)。只要编译代码中引用的类/方法原型与编译所针对的jar保持不变,一切都会顺利进行 有关兼容性的具体定义,请参阅(感谢@Miseraverable的

我来自.net世界。我记得,如果您使用一个dll构建,但在运行时提供另一个dll,.net会立即抱怨

我现在向我的项目添加一些hadoop参考,并找到以下文章

我只是不明白这是怎么发生的

Java可以用一个jar构建,但可以用另一个jar运行


谢谢

是的。API通常就是这样(您编译API,但在运行时可以使用API的较新版本运行,该版本可能包含在实现中)。只要编译代码中引用的类/方法原型与编译所针对的jar保持不变,一切都会顺利进行


有关兼容性的具体定义,请参阅(感谢@Miseraverable的链接)。

Lookup我可能会错。net只会在版本不正确的情况下抱怨,我记得,所以dll就是它的用途。动态链接库。谢谢大家。@Miserevable-有什么兼容的更改吗?对不起,我不明白这个问题。@Miserevable-你说的是“定义不变”。我认为这意味着你在暗示某种形式的更改是可以接受的,而有些是不可以的(也就是说,有某种形式的“兼容更改”)。哦,好的:)是的,有很多兼容的更改,例如,生产jar中的类可以有其他方法。你已经引用了我对二进制兼容性的引用,你可以在那里读到所有血淋淋的细节。@Miserevariable-是的,我知道。我的回答有点简短,但我的意思是jar具有相同的类,并且任何引用方法都是相同的。我知道很多其他的东西可以改变而不会引起问题。