向后二进制兼容性(或向下兼容性) - 使用旧版本库API构建的客户端在新版本(wiki)上运行的能力.
向上二进制兼容性(或向前兼容性) - 使用新版本的库API构建的客户端在旧版本(wiki)上运行的能力.
关于自1.4.2以来J2SE 5.0中 JDK 不兼容性的一般Sun文档(以及Java SE 6与J2SE 5.0的兼容性)描述了JDK的兼容性,如下所示:
除了下面列出的不兼容性之外,JDK 5.0 与Java 2 SDK v1.4.2 向上二进制兼容.这意味着,除了指出的不兼容性之外,使用1.4.2版编译器构建的类文件将在JDK 5.0中正确运行.
我认为文档编写者在这句话中混淆了 "向上"和"向后"兼容性术语.它们描述了"向后"兼容性,但将此功能称为"向上"兼容性.
这是一个错字,错误或预期的术语吗?JDK"向上"还是"向后"兼容?
java backwards-compatibility binary-compatibility forward-compatibility
java: cannot access org.springframework.boot.SpringApplication
bad class file: /C:/Users/xyz/.m2/repository/org/springframework/boot/spring-boot/3.0.0-SNAPSHOT/spring-boot-3.0.0-20220910.145857-773.jar!/org/springframework/boot/SpringApplication.class
class file has wrong version 61.0, should be 52.0
Please remove or make sure it appears in the correct subdirectory of the classpath.
Run Code Online (Sandbox Code Playgroud) 我正在开发一个需要针对JDK 1.6进行构建的项目,但我想针对Java 1.6和1.7进行测试 - 我安装了Java 1.6和1.7 JDK.
我知道我可以为每个人创建一个新的Java平台,但这也会导致项目针对JDK 1.6/1.7进行构建 - 我只希望它针对两者运行.是否有一种简单的方法可以告诉Netbeans使用我的JDK 1.6平台构建,但使用我的Java 1.7 JRE运行.或者即使有一个使用外部JRE来运行项目的选项,我也可以使它工作.
我创建了一个Java库程序,并在另一个Java程序中将其用作.jar文件。我的IDE是NetBeans。我通过命令行尝试了相同的概念,但出现以下错误:
类文件的版本号为52.0,应为50.0,请删除或确保其显示在类路径的正确子目录中。导入Demo1_Lib.Test1; ^
这是我的步骤。
步骤1: 在NetBeans IDE中创建以下类库。
package Demo1_Lib;
/**
*
* @author tveluppillai
*/
public class Test1
{
public void print()
{
System.out.println("hello");
}
}
Run Code Online (Sandbox Code Playgroud)
步骤2:在netbeans上创建一个Java项目并添加jar文件。(Test1.jar)并使用类库函数。
package test2;
import Demo1_Lib.Test1;
/**
*
* @author tveluppillai
*/
public class Test2
{
/**
* @param args the command line arguments
*/
public static void main(String args[])
{
Test1 obj = new Test1();
obj.print();
}
}
Run Code Online (Sandbox Code Playgroud)
这样可以很好地编译,并且在我运行时可以在NetBeans中提供正确的输出
但是,当我使用命令提示符执行相同操作时,出现错误。
我使用以下命令来编译和运行它。
javac -cp C:\\Demo_Lib\\Test\\Test1.jar Test2.java
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
类文件的版本号为52.0,应为50.0,请删除或确保其显示在类路径的正确子目录中。导入Demo1_Lib.Test1; ^
我想念什么?
我试图在 Spring Starter 中创建一个 Spring Boot 3.0.5 应用程序以及 Java 8。下面分享的屏幕截图
在发布后,我检查了“探索”按钮,该按钮有助于确定代码的外观。
然而,我发现
sourceCompatibility = '17'
Run Code Online (Sandbox Code Playgroud)
我没想到会这样,因为我在上面的屏幕中选择了 Java 8。我在这里错过了什么吗?