今天加了一下优化选项,测试ProGuard。然后出现了错误。一想,同事刚加了个几个包,是不是因为这个?复制过来之后,依然出错:
C:\Program Files\Taishan\Office\bin>..\jdk\bin\java -jar Office.jar Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.VerifyError: Expecting a stackmap frame at branch target 60 Exception Details: Location: Main.x()I @5: ifnull Reason: Expected stackmap frame at this location. Bytecode: 0x0000000: b802 bb59 4bc6 0037 2ab4 0105 593b 049f 0x0000010: 0013 1a06 9f00 0e1a 089f 0009 1a10 07a0 0x0000020: 001d b201 1604 7e9a 0015 04b3 0116 06bc 0x0000030: 0a59 0304 4f59 0508 4fb3 012b b201 16ac 0x0000040: at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) at java.lang.Class.privateGetMethodRecursive(Class.java:3048) at java.lang.Class.getMethod0(Class.java:3018) at java.lang.Class.getMethod(Class.java:1784) at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:650) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:632)
奇怪的是,使用另外一种方式就能启动。网上搜索:
一种可能是编译与运行使用的JDK不一致。这个不存在。吾都是泰山JDK8。
需要加个-noverify
C:\Program Files\Taishan\Office\bin>..\jdk\bin\java -jar -noverify Office.jar
果然正常了。再去棵棵另外一种启动方式,原来有类似参数。这样就通顺了。