对不起,如果这是题外话。我是Java初学者,知道Java应该是跨平台一致的。但是我想知道我的jar文件或* class文件在Ubuntu上执行的事实是否可以保证它在MacOS上正常运行?
我基本上执行以下操作来创建* class和* jar。两个Java类MAIN.java
依赖于SIDE.java
,两个Java文件都包含package classes;
标头(javac
创建一个名为classes
的文件夹,并放置MAIN.class
和SIDE.class
在里面):
javac -d . SIDE.java MAIN.java
jar cvfe MAIN.jar classes/MAIN classes/*.class
我尝试同时运行:
java classes.MAIN -read number.logs
和
java -jar MAIN.jar -read number.logs
,它们都可以在Ubuntu上正常运行。这足够好并且可以在MacOS上运行吗? (我没有MacOS,在这种情况下是否可以使用模拟器来检查事物?)
答案 0 :(得分:4)
是的,直到并且除非您使用一些环境变量(即特定于平台的功能,例如
System.getProperty("os.name")
。
JVM保证了这种跨平台的可移植性。您可以详细了解here。
答案 1 :(得分:1)
出于某种原因,Java是跨平台的。您的Java代码将转换为Java字节码(您的.class
文件),而JVM
(Java虚拟机)是运行您的字节码的计算机。
此JVM随操作系统一起安装Java。因此,如果可以安装JRE(包括JVM),则可以运行代码。
有一个例外,Java语言有时使用os-standards来表示图形(awt类),因此,如果您使用的是这些类,则您的程序看起来可能会有所不同,但工作原理相同。
例如,操作系统如何保存文件,如何由JVM处理,并且您不应该成为高级开发人员,除非您遇到操作系统方面的限制。这些限制(视情况而定)由Exceptions处理。如果您在代码中处理异常,则在一个操作系统上无法正常工作的情况几乎没有。