首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

javac 11可以编译在java 8 JVM上运行的二进制文件/jar文件吗?

不可以。Java编译器(javac)的版本必须与目标Java虚拟机(JVM)的版本兼容,否则无法运行。Java 11的编译器生成的二进制文件(.class文件或.jar文件)使用了Java 11的字节码格式和特性,而Java 8的JVM无法理解这些新特性。因此,如果使用javac 11编译代码,生成的二进制文件只能在Java 11或更高版本的JVM上运行。如果需要在Java 8的JVM上运行,应该使用javac 8进行编译。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

2020Java高频面试题--Java知识点汇总

字节码就是虚拟机机器指令,它与平台无关,有统一格式,不依赖于具体硬件环境,只运行JVM JVM 执行字节码文件时,把字节码解释成具体机器指令执行。...你可以Windows平台编写Java代码,同时Windows编译它。Windows编写类和jar文件能够运行在Unix环境下。所以Java是真正平台无关语言。...Java编译javac编译Java代码,而JVM java运行该代码。 javac HelloWorld.java java HelloWorld 7. Java类加载器是怎么工作?...8. 你认为用于main方法“ main”是Java关键字? 不,main只是方法名称。 一个类文件可以有多个具有相同名称main方法。 它不是Java关键字。 9....它们之间主要区别是字节可以存储原始二进制数据,而char则可以存储字符或文本数据。 char用法是 char ch ='x'; 字节值范围是-128至127。 一个字节由8位组成。

38851

JVM

文章目录 Java脑图 谈谈对Java理解 平台无关性 特点 类测试complie 编译运行编译 不同系统解析class文件成为不同机器码 为什么不直接编译成机器码 JVM如何加载.class文件...特点 编译 生成.class 二进制文件 javac xxx.java 运行 java xxx 命令反编译帮助 javap -help 反汇编 javap -c xxx 类测试complie...,进行类加载 可以对敏感.class加密,findClass里面解密 对生成二进制流添加一些类信息 甚至思考一下AOP用这种方法实现 JAVA字节码增强技术之ASM ASM是一款基于...ASM目标是生成,转换和分析已编译java class文件,可使用ASM工具读/写/转换JVM指令集。...进程最大访问3G 64位 进程最大访问512G 内存模型 中间核心部分 Java运行在虚拟机,运行时,会划分不同数据区域,方便内存空间方便管理 C编译划分内存时候 数据段:

50821

java基础笔记1

2)*(1*2*2*2*2) 2个16进制表示一个字节 8二进制表示一个字节 ---编译.java代码命令:javac 一次性编译 多次使用 java语言是编译执行语言 C语言程序没有编译执行...,每次运行速度基本一致; ---运行.class程序命令:java java程序第一次运行时比较慢(因为需要编译),第二次以后非常快(不需要编译Java运行时(JVM处理): 1.类加载器(ClassLoader...跨平台原理: Java程序运行机制:首先使用javac.exe将源程序(后缀.java编译成与平台无关字节码文件 (后缀.class),然后由Java虚拟机(JVM)读取并处理.class文件Java...解释器(JVM组件) 负责将处理后文件相应平台上运行。...需要在Windows中注册后才可以使用; 常见java命令: javac:将源代码编译为class文件 java:执行class文件 javadoc:生成帮助文档及API jar:将代码归档

1.1K91

JAVA简介及特性

编译阶段和运行阶段可以不同操作系统完成windows编译 编译之后生成了“字节码” 把“字节码”放到linux运行 完全可以,因为Java是跨平台。...问题:字节码文件二进制文件? 字节码文件不是二进制文件。 如果是二进制的话,就不需要JVM了。 因为操作系统可以直接执行二进制java程序从开发到最终运行经历了什么?...编译期:(可以windows) 第一步:硬盘某个位置(随意),新建一个xxx.java文件 第二步:使用记事本或者其它文本编辑器例如EditPlus打开xxx.java文件 第三步...并且一个java文件可以生成多个class文件。(编译实质是检查语法) 运行期:(JRE起作用):(可以windows,也可以在其他OS。)...新建java文件 打开java文件java源代码 保存 javac命令编译 java命令运行 编写、编译运行 5、编写java第一个java程序:HelloWorld(

37110

【连载】聊聊 APK——直接运行 Dex文件黑魔法

首先,我们先看看如何使用 Dex 文件在手机终端上输出一个 HelloWorld 编译运行工具 学习过 Android 的人一定知道, Android OS 虚拟机曾经叫 dalvik,现在叫...那么,在学习 java 语言之初,使用 IDE 进行 java 开发之前,我们一定知道有两个二进制文件叫做 javacjava,一个是将 xxx.java 源代码编译成 xxx.class 字节码...)Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode) 可以看见我机器运行java 8,好,运行工具暂时介绍到这里,接下来我们看下如何让...javac HelloWorld.java即可,在当前目录下,就会出现一个HelloWorld.class文件jvm 需要文件就准备好了,接下来看看 dalvik 需要准备东西。...Run HelloWorld 我们拿到了 class 文件和 dex 文件,那么 jvm ,我们只要使用 java HelloWorld 就搞定了。

2.2K20

Java 如何实现动态脚本?

使用命令行工具javac编译,linux/mac cp分隔符使用 : windown使用 ; javac -cp ....从上面三个条件可以推出,JVM 自带类加载器(Bootstrap 类加载器、Extension 类加载器)所加载类, JVM 生命周期中始终不会被 GC。...安全问题 让用户写脚本,并且服务器运行,光是想想就知道是一件非常危险事情,因此如何保证脚本安全,是必须严肃对待一个问题。...类白名单及黑名单机制 在用户写 Java 代码中,我们需要规定用户允许使用类范围,试想用户调用 File 来操作服务器文件,这是非常不安全。...javassist 库可以对 Class 二进制文件进行分析,借助该库我们可以很容易地得到 Class 所依赖类。

1.6K20

Java 虚拟机基础原理:功能,内存管理,类加载机制,分析字节码执行过程

面试和求职过程中,经常会遇到 JVM 相关知识。 JVM 功能 JVM 和操作系统 使用 C++ 开发程序,编译二进制文件后,就可以直接执行了,因为操作系统能够识别它。...但是,使用 javac 编译 Java 程序成为 .class 文件后,还需要 Java 虚拟机识别 .class 后缀文件,并且解析它指令,然后才会被操作系统识别从而能调用操作系统函数。... Maven 仓库下载同一版本 jar 包就可以到处运行,不需要在每个平台上再编译一次。...JVM 扩展语言,比如 Clojure、JRuby、Groovy 等,编译到最后都是 .class 文件Java 语言维护者,只需要控制好 JVM 这个解析器,就可以将这些扩展语言无缝运行JVM...当我们使用 Java 命令运行 .class 文件时候,实际就相当于启动了一个 JVM 进程。

45620

Java学习笔记_零基础系列(三)Java5种语言特性

编译阶段和运行阶段可以不同操作系统完成windows编译编译之后生成了“字节码”,把“字节码”放到linux运行完全可以,因为Java是跨平台可以做到一次编写到处运行。...问题: 字节码文件二进制文件? 字节码文件不是二进制文件。 如果是二进制的话,就不需要JVM了。 因为操作系统可以直接执行二进制java程序从开发到最终运行经历了什么?...编译期:(可以windows) 第一步:硬盘某个位置(随意),新建一个xxx.java文件 第二步:使用记事本或者其它文本编辑器例如EditPlus打开xxx.java文件 第三步:xxx.java...并且一个java文件可以生成多个class文件。(编译实质是检查语法) 运行期(JRE起作用): (可以windows,也可以在其他OS。)...新建java文件 打开java文件java源代码 保存 javac命令编译 java命令运行 编写、编译运行 5、编写java第一个java程序:HelloWorld(你好世界:问世) 这个程序不需要大家理解

41020

2021 最新版 JDK 1.8 下载与安装 步骤演示 (图示版)

0.2 JDK基本组件 javac编译器,将源程序转成字节码 jar – 打包工具,将相关文件打包成一个文件 javadoc – 文档生成器,从源码注释中提取文档 jdb – debugger...,查错工具 java运行编译java程序(.class后缀) appletviewer:小程序浏览器,一种执行HTML文件Java小程序Java浏览器。...Javah:产生可以调用Java过程C过程,或建立能被Java程序调用C过程文件。 Javap:Java反汇编器,显示编译文件可访问功能和数据,同时显示字节代码含义。...安装JRE 注意: jdk11不自带jre安装程序, JDK 8 自带jre安装程序,有需要可以安装,初学者,可以不用安装 7.1 设置安装目录 7.2 选择完成之后,点击下一步 7.3 等待安装 8...配置成功 测试一次编译环境和运行环境 javac -version 最后,分别输入: javajavac 测试环境变量 出现如下界面,配置成功 Microsoft Windows

38810

Java 8升级到Java 11注意事项

多版本 jar 文件 Java 11 中,可以创建一个 jar 文件,其中包含多个特定于 Java 发布版文件版本。...从 jdeprscan 和 jdeps 获取警告和错误来自编译器。使用 jdeprscan 和 jdeps 优点是,可以现有的 jar 和类文件(包括第三方库)运行这两个工具。... Java 11 运行 大多数应用程序不修改情况下应该可以 Java 11 运行。首先要尝试不重新编译代码情况下在 Java 11 运行。... Java 8 使用此标志运行 Java 11 运行时使用输出选项。大多数情况下,Java 811默认值是相同。但是,使用 Java 8设置可确保奇偶校验。...例如, Java 11 运行jar 是使用 JDK 13 编译程序。

2K20

Java一生

从我们码出 public class Cafe 时候,可以说。这个种子 bean 就已经埋下了。然后我们将它通过前端编译javac 编译成了 Class 文件 。...类 首先经历就是被 Javac 这个前端编译器进行编译。因为这样,它才能被 JVM 所使用,这一步 Javac 都对它做了什么呢?...加载 将字节码二进制流加载到内存,当我们代码经历过前端编译器,便成为了可以被虚拟机加载字节码文件。...{}块)中语句合并产生编译器收集顺序是由语句文件中出现顺序决定,静态语句块中只能访问到定义静态语句块之前变量,定义它之后变量,在前面的静态语句块可以赋值,但是不能访问 <clinit...实现) 负责加载 JAVA_HOME/lib 目录下 jar,注意:识别方式为文件名识别,即使放入不符合规范文件也不能被加载。

32410

为什么需要JVM?它处在什么位置?

一般情况下,使用 C++ 开发程序,编译二进制文件后,就可以直接执行了,操作系统能够识别它;但是 Java 程序不一样,使用 javac 编译成 .class 文件之后,还需要使用 Java 命令去主动执行它...你可能会想,我们为什么不能像 C++ 一样,直接在操作系统运行编译二进制文件呢?而非要搞一个处于程序与操作系统中间层虚拟机呢? 这就是 JVM 过人之处了。...而 Java 跨平台意义在于一次编译,处处运行,能够做到这一点 JVM 功不可没。比如我们 Maven 仓库下载同一版本 jar 包就可以到处运行,不需要在每个平台上再编译一次。...除了 JRE,JDK 还提供了一些非常好用小工具,比如 javacjavajar 等。它是 Java 开发核心,让外行也可以炼剑!...这些字节码可以解释执行,也可以编译成机器码,运行在底层硬件可以JVM 是一种混合执行策略。 好了,本文就到这里了!

13710

Java 虚拟机原理】动态字节码技术 | Dalvik & ART 虚拟机 | Android 字节码打包过程

; 常用动态字节码技术 : Javassist : 创建 / 分析 / 编辑 Java 字节码文件 ; ASM : 操作 / 分析 Java 字节码文件 ; 使用 Javassist 框架 , 可以自动查找要修改内容所在字节码文件位置...; Dalvik 已经被淘汰 , 目前重点学习 ART 即可 ; JVM 与 Dalvik 虚拟机区别 : JVM 是基于栈 ; 打包后字节码文件jar 文件 ; Dalvik 是基于寄存器...; 打包后字节码文件是 dex 文件 ; 程序 CPU 运行 , 通过执行寄存器指令对数据进行操作 ; jar 文件与 dex 文件 对比图 : JVM 中有 JIT 即时编译器 , 代码在运行时..., 边解释 , 边运行 , 如果有一段代码经常运行 , 则可以通过 JIT 即时编译器 提前准备 , 三、Android 字节码打包过程 ---- Android 源码打包成安装文件 , 安装到设备中..., 最后执行应用程序 , 期间各种执行细节 ; 编写好 Java 源码文件 ; 使用 javac 工具 , 将 Java 源码编译成 class 字节码文件 ; 使用 dx 工具 , 将 class

57020

Java从入门到失业》第四章:类和对象(4.6):类路径

其实类还有一种存放方式,就是可以归档到一个jar文件中,jar文件其实就是把字节码文件连同子目录一同归档到一个压缩文件中。...jar文件是使用zip格式压缩,我们可以使用zip程序来查看和解压jar文件。其实Java自带类库就是jar文件。例如JRE安装目录jre/lib和jre/lib/ext下就有很多jar。...类路径就是java编译器或JVM用来定位类基目录,类路径可以有多个,是一组路径集合。无论是编译还是运行,都需要设置类路径,类路径形式和操作系统相关。...编译命令如下: javac -d 编译后class路径 源文件编译命令如下: javac -d D:\Java大失叔\workspace\BaseJava\bin D:\Java大失叔\workspace...推荐几种做法是 命令行中用-classpath或-cp选项 命令行中设置classpath环境变量 编写shell脚本,将设置classpath环境变量和编译命令一起写入脚本 事实编译器会按照下面方式搜寻类

37820

Java基础14:离开IDE,使用javajavac构建项目

•-target:指定生成class文件运行在哪个JVM版本,以后实际运行JVM版本必须要高于这个指定版本。...javac -encoding UTF-8 Xxx.java -verbose 输出详细编译信息,包括:classpath、加载文件信息。...,D:\大三下\编译原理\cup\java-cup-11a.jar,E:\java\jflex\lib\J //-sourcepath Flex.jar] [类文件搜索路径: C:...-@ 如果同时需要编译数量较多文件(比如1000个),一个一个编译是不现实(当然你可以直接 javac *.java ),比较好方法是:将你想要编译文件名都写在一个文件中(比如sourcefiles.txt..., javac -d $BIN_PATH/ -cp jarfile @jarfile@SRC_FILE_LIST_PATH 在要编译文件很多时候,一个个敲命令会显得很长,也不方便修改, 可以把要编译文件文件

1.6K00

2020最全Java面试题--基础篇

字节码就是虚拟机机器指令,它与平台无关,有统一格式,不依赖于具体硬件环境,只运行JVM JVM 执行字节码文件时,把字节码解释成具体机器指令执行。...你可以Windows平台编写Java代码,同时Windows编译它。Windows编写类和jar文件能够运行在Unix环境下。所以Java是真正平台无关语言。...Java编译javac编译Java代码,而JVM java运行该代码。 javac HelloWorld.java java HelloWorld 7. Java类加载器是怎么工作?...除了上述3种类加载器,我们也可以通过继承java.lang.ClassLoader实现自定义类加载器。 8. 你认为用于main方法“ main”是Java关键字?...它们之间主要区别是字节可以存储原始二进制数据,而char则可以存储字符或文本数据。 char用法是 char ch ='x'; 字节值范围是-128至127。 一个字节由8位组成。

56031

Java基本功】离开IDE,使用javacJava构建项目

标记> 传递给运行时系统 -Werror 出现警告时终止编译 @ 从文件读取选项和文件详细介绍javac命令之前,先看看这个classpath是什么 classpath是什么 dos下编译...•-target:指定生成class文件运行在哪个JVM版本,以后实际运行JVM版本必须要高于这个指定版本。...javac -encoding UTF-8 Xxx.java -verbose 输出详细编译信息,包括:classpath、加载文件信息。...,D:\大三下\编译原理\cup\java-cup-11a.jar,E:\java\jflex\lib\J //-sourcepath Flex.jar] [类文件搜索路径: C:...-d $BINPATH/ -cp $jarfile @$SRCFILELISTPATH 在要编译文件很多时候,一个个敲命令会显得很长,也不方便修改, 可以把要编译文件文件中,文件名前加@,

1.6K20

回顾Java 8 9 10新特性,展望即将来临11和明年12【大牛经验】

javac 工具现在支持根据需要生成原生标头。这样便无需构建管道中单独运行 javah 工具。可以使用新 -h 选项 javac 中启用此特性,该选项用于指定写入头文件目录。...它有一个tools.jar文件,其中包含javac编译Java类。 jre\bin目录包含基本命令,如java命令。 Windows平台上,它包含系统运行时动态链接库(DLL)。...通过将JAR放在此目录中,可以扩展Java SE平台。 这些JAR内容对于在此运行时映像编译运行所有应用程序都可见。 jre\lib目录包含几个JAR。...Java提供了一种通过类路径定位资源来访问资源位置无关方式。 需要与JAR中打包类文件相同方式打包资源,并将JAR添加到类路径。 通常,类文件和资源打包在同一个JAR中。...当然,一些依赖于JDK中Java EE API及工具应用程序将无法编译运行。将JDK 6、7或8移植到新版本时将会产生二进制不兼容和源代码不兼容。

3.2K30
领券