java程序一写文件就崩溃_为什么直接修改java的.class文件会导致程序崩溃
是这样的。
有一次,hardcode了ip地址在代码里,由于懒得重新编译。
强行用记事本打开.class文件,发现里面已经面目全非了,但是数字还是原来的样子。
于是直接改了.class文件里的数字,换了个ip地址,结果运行时是直接崩溃的。
为什么呢?是有什么检查机制吗?
-------补充--------------
不好意思 描述不太准确啊
补充个例子
1)我先新建了一个.java
public class Test {
public Test() {
}
public static void main(String[] args) {
String ip = "172.18.81.111";
System.out.println(ip);
}
}
然后
javac Test.java
运行java Test
结果正常
输出 172.18.81.111
2)然后我用vim修改.class文件
Êþº¾^@^@^@4^@^]
^@^F^@^O^H^@^P ^@^Q^@^R
^@^S^@^T^G^@^U^G^@^V^A^@^F^A^@^C()V^A^@^DCode^A^@^OLineNumberTable^A^@^Dmain^A^@^V([Ljava/lang/String;)V^A^@
SourceFile^A^@ Test.java^L^@^G^@^H^A^@^M172.18.81.111^G^@^W^L^@^X^@^Y^G^@^Z^L^@^[^@^\^A^@^DTest^A^@^Pjava/lang/Object^A^@^Pjava/lang/System^A^@^Cout^A^@^ULjava/io/PrintStream;^A^@^Sjava/io/PrintStream^A^@^Gprintln^A^@^U(Ljava/lang/String;)V^@!^@^E^@^F^@^@^@^@^@^B^@^A^@^G^@^H^@^A^@ ^@^@^@^]^@^A^@^A^@^@^@^E*·^@^A±^@^@^@^A^@
^@^@^@^F^@^A^@^@^@^D^@ ^@^K^@^L^@^A^@ ^@^@^@+^@^B^@^B^@^@^@^K^R^BL²^@^C+¶^@^D±^@^@^@^A^@
^@^@^@^N^@^C^@^@^@^H^@^C^@
^@
^@^K^@^A^@^M^@^@^@^B^@^N
~
~
上面的.class文件中明显有一串数字,直接修改之。
然后再运行java Test
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.ClassFormatError: Unknown constant tag 49 in class file Test
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)
为什么修改个数字就会崩溃呢?
java程序一写文件就崩溃_为什么直接修改java的.class文件会导致程序崩溃相关推荐
- jupyter notebook保存的文件在哪_通过配置文件修改jupyter notebook初始文件夹
1)利用everything 搜索文件.jupyterjupyter_notebook_config.py 或者在cmd终端中输入下面命令,生成初始化的notebook配置文件: jupyter no ...
- Java IO练习--在程序中写一个“HelloJavaWorld你好世界“输出到操作系统文件Hello.txt文件中
package com.kj.test;import cn.hutool.core.io.IoUtil;import java.io.File; import java.io.FileOutputSt ...
- 在程序中写一个“HelloJavaWorld你好世界“输出到操作系统文件Hello.txt文件中
import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOExce ...
- java里用set写自我介绍代码_【优质】java程序员自我介绍-优秀word范文 (8页)
本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除! == 本文为word格式,下载后可方便编辑和修改! == java程序员自我介绍 第1篇第2篇第3篇第4篇第 ...
- java文件读入原理_描述一下JVM加载class文件的原理机制
1.JVM 简介 JVM 是我们Javaer 的最基本功底了,刚开始学Java 的时候,一般都是从"Hello World "开始的,然后会写个复杂点class ,然后再找一些开源 ...
- 初级java一天写多少个接口_这35个接口,用Java开发,一般要多少天?一天可以完成多少个...
大家讲道理2017-05-17 10:09:009楼 数据库设计比 Java 代码开发慢很多,如果数据库是设计好的,Java 只纯开发接口的话,也就是写 35 个 SQL 语句多些时间,但是为了保证正 ...
- java如何解除文件锁定状态_如何使用Python解锁锁定的文件和文件夹(mac)
在我的脚本的主要目的完成后,作为"清理",调用一个函数来递归查看每个文件夹并删除以预定的一组扩展名结尾的所有文件 . 我在测试期间,发现一些文件扩展名在要删除的列表中的文件实际上会 ...
- java byte与char互转原理_【转】java byte与char互转原理
一.字节和unicode Java内核是unicode的,就连class文件也是,但是很多媒体,包括文件/流的保存方式是使用字节流的.因此Java要对这些字节流经行转化. char是unicode的, ...
- java编写桌球游戏素材小球图片_你学不好Java还是有原因的!拿走这套Java系统教程,自学必备...
很多同学都遇到过一种情况:就是无论自己怎么学Java,到头来发现学的都是皮毛,当真正去用python去做一个项目的时候,脑袋里面一片空白.完全不知道从何做起! 那是你没有系统的学过一次Java,现在的 ...
最新文章
- JavaScript高级程序设计(第3版)非扫描版
- ML之xgboost:基于xgboost(5f-CrVa)算法对HiggsBoson数据集(Kaggle竞赛)训练实现二分类预测(基于训练好的模型进行新数据预测)
- C++文件读写详解(ofstream,ifstream,fstream)
- 电话光端机技术参数配置介绍
- python3.6sysos_求大佬,这是什么情况啊
- sd卡linux错误检测,android系统正在准备SD卡正在检测是否有错误且SD卡无法读取解决办法...
- origin 修改水平坐标的刻度
- 寂寞了就去搞钱?俞敏洪举报“俞敏洪”:“搞钱论”没一句话是我说的
- C语言内存的动态分配
- [JSOI2008]最大数maxnumber(线段树)
- 联想Y9000P安装Ubuntu18.04+PX4+mavros+QGC
- 金笛JDMAIL打造公务员邮件系统
- 【数据分析面试】大厂高频SQL笔试题(二)
- 多体动力学ANCF方法简单介绍
- 计算机中的前端和后端岗位,前端工程师的岗位职责
- html英语单词不换行,css如何设置英文单词不换行?
- 动态设置html字号,html动态字体
- 如何在3dMax中创建雪地场景?
- php判断是否节假日,php 排除周末与节假日程序实例代码
- 让你的 wowza 服务器提供 RESTful web 服务
热门文章
- 如何处理 Hybris Accelerator css style 显示不正确的问题
- SAP Spartacus 服务器端渲染文件 server.js 和构建后的 main.js 对比
- SAP Spartacus B2B 列表页面的 (i) icon popover Component 的声明位置
- SAP Spartacus popover Component 的单元测试
- Angular路由错误消息 - router-outlet is not a known element
- sublime text的dockerfile语法高亮插件
- SAP UI5 app view router - Haiji's application
- SAP应用followup transaction的错误讨论
- custom field further usage - add into UI and report
- Document Builder: replace variable guid in merge