java程序一写文件就崩溃_为什么直接修改java的.class文件会导致程序崩溃 朱雀 2022-11-09 01:25 86阅读 0赞 是这样的。 有一次,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编程中,异常处理是为了防止因程序运行过程中出现的错误情况导致程序崩溃。以下是一些可能导致程序崩溃的异常处理不当的例子: 1. **未捕获的异常**:如果在方法或代码 小鱼儿/ 2024年09月16日 01:24/ 0 赞/ 12 阅读
相关 Java异常处理不当导致程序崩溃 在Java编程中,如果异常处理不当,确实可能导致程序崩溃。以下是一些常见的问题和解决方案: 1. 不捕获异常:如果你没有将可能抛出异常的代码包裹在try-catch块内,那么 待我称王封你为后i/ 2024年09月15日 11:06/ 0 赞/ 24 阅读
相关 Java异常处理不当导致程序崩溃示例 在Java编程中,如果我们没有正确地处理异常,可能会导致程序运行不正常甚至崩溃。下面是一个简单的示例: ```java public class ExceptionExamp 柔光的暖阳◎/ 2024年09月14日 15:57/ 0 赞/ 17 阅读
相关 Java异常处理不当导致程序崩溃示例 在Java编程中,如果异常处理不当时,可能会导致程序无法正常运行,甚至崩溃。下面是一个简单的示例: ```java public class ExceptionExample 逃离我推掉我的手/ 2024年09月10日 17:33/ 0 赞/ 22 阅读
相关 Java API调用错误导致程序崩溃案例 在编程中,API(应用程序接口)调用错误可能会导致程序运行时出现问题,甚至引发系统崩溃。以下是一个具体的案例: **案例描述:** 开发一个基于Java的Web应用,该应用需 约定不等于承诺〃/ 2024年09月10日 02:27/ 0 赞/ 12 阅读
相关 面试官:为什么线程崩溃崩溃不会导致JVM 崩溃? 大家好,我是蜀州凯哥 网上看到一个很有意思的据说是某大厂的面试题:为什么线程崩溃崩溃不会导致 JVM 崩溃? 这个问题我看了不少回答,但都没答到根本原因,所以决定答一答,相 ゝ一世哀愁。/ 2024年04月03日 11:35/ 0 赞/ 36 阅读
相关 美团一面:为什么线程崩溃崩溃不会导致 JVM 崩溃 网上看到一个很有意思的美团面试题:为什么线程崩溃崩溃不会导致 JVM 崩溃,这个问题我看了不少回答,但发现都没答到根上,所以决定答一答,相信大家看完肯定会有收获,本文分以下几节 ﹏ヽ暗。殇╰゛Y/ 2023年09月26日 17:09/ 0 赞/ 82 阅读
相关 java程序一写文件就崩溃_为什么直接修改java的.class文件会导致程序崩溃 是这样的。 有一次,hardcode了ip地址在代码里,由于懒得重新编译。 强行用记事本打开.class文件,发现里面已经面目全非了,但是数字还是原来的样子。 于是直接改 朱雀/ 2022年11月09日 01:25/ 0 赞/ 87 阅读
还没有评论,来说两句吧...