怎么办?
11 个解决方案
#1
先看你反编译的java类有没有正常在jdk1.5环境下生成class文件?
如果生成了,那直接使用eclipse的export jar功能就可以导出jar文件了。
如果生成了,那直接使用eclipse的export jar功能就可以导出jar文件了。
#2
没有生成,不知道怎么编译成class文件。。
#3
eclipse有一个目录存放class文件的,一般在工程的跟目录下面的bin目录下面,你进去看看,看是否有class文件。
如果没有class文件,看你反编译出来的java文件是否有报错的?
#4
用ant编译
#5
用javac编译
#6
我知道什么原因了,源代码没有放到src下面。
还有一个问题,就是有的方法反编译处理是错误的,比如下面这一个,反编译是这样的,jd-gui里就用红色字体注释着error。
// ERROR //
protected MessageResult sendPost(String path, boolean enableSSL, byte[] data) { // Byte code:
// 0: aconst_null
// 1: astore 4
// 3: aconst_null
// 4: astore 5
// 6: aconst_null
// 7: astore 6
// 9: iload_2
// 10: ifeq +7 -> 17
// 13: aload_0
// 14: invokevirtual 74 cn/jpush/api/HttpPostClient:initSSL ()V
// 17: new 77 java/net/URL
// 20: dup
// 21: aload_1
// 22: iload_2
// 23: invokestatic 79 cn/jpush/api/BaseURL:getUrlForPath (Ljava/lang/String;Z)Ljava/lang/String;
// 26: invokespecial 85 java/net/URL:<init> (Ljava/lang/String;)V
// 29: astore 7
// 31: aload 7
// 33: invokevirtual 88 java/net/URL:openConnection ()Ljava/net/URLConnection;
// 36: checkcast 92 java/net/HttpURLConnection
// 39: astore 4
// 41: aload 4
// 43: sipush 20000
// 46: invokevirtual 94 java/net/HttpURLConnection:setConnectTimeout (I)V
// 49: aload 4
// 51: sipush 30000
// 54: invokevirtual 98 java/net/HttpURLConnection:setReadTimeout (I)V
// 57: aload 4
// 59: iconst_0
// 60: invokevirtual 101 java/net/HttpURLConnection:setUseCaches (Z)V
// 63: aload 4
// 65: iconst_1
// 66: invokevirtual 105 java/net/HttpURLConnection:setDoOutput (Z)V
// 69: aload 4
// 71: ldc 108
// 73: invokevirtual 110 java/net/HttpURLConnection:setRequestMethod (Ljava/lang/String;)V
// 76: aload 4
// 78: ldc 113
// 80: ldc 115
// 82: invokevirtual 117 java/net/HttpURLConnection:setRequestProperty (Ljava/lang/String;Ljava/lang/String;)V
// 85: aload 4
// 87: ldc 121
// 89: ldc 8
// 91: invokevirtual 117 java/net/HttpURLConnection:setRequestProperty (Ljava/lang/String;Ljava/lang/String;)V
// 94: aload 4
// 96: ldc 123
// 98: ldc 125
// 100: invokevirtual 117 java/net/HttpURLConnection:setRequestProperty (Ljava/lang/String;Ljava/lang/String;)V
// 103: aload 4
// 105: ldc 127
// 107: aload_3
// 108: arraylength
// 109: invokestatic 129 java/lang/String:valueOf (I)Ljava/lang/String;
// 112: invokevirtual 117 java/net/HttpURLConnection:setRequestProperty (Ljava/lang/String;Ljava/lang/String;)V
// 115: new 133 java/io/DataOutputStream
// 118: dup
// 119: aload 4
// 121: invokevirtual 135 java/net/HttpURLConnection:getOutputStream ()Ljava/io/OutputStream;
// 124: invokespecial 139 java/io/DataOutputStream:<init> (Ljava/io/OutputStream;)V
// 127: astore 5
// 129: aload 5
// 131: aload_3
// 132: invokevirtual 142 java/io/DataOutputStream:write ([B)V
// 135: aload 5
// 137: invokevirtual 146 java/io/DataOutputStream:flush ()V
// 140: aload 4
// 142: invokevirtual 149 java/net/HttpURLConnection:getResponseCode ()I
// 145: sipush 200
// 148: if_icmpne +92 -> 240
// 151: aload 4
// 153: invokevirtual 153 java/net/HttpURLConnection:getInputStream ()Ljava/io/InputStream;
// 156: astore 8
// 158: new 157 java/lang/StringBuffer
// 161: dup
// 162: invokespecial 159 java/lang/StringBuffer:<init> ()V
// 165: astore 9
// 167: new 160 java/io/InputStreamReader
// 170: dup
// 171: aload 8
// 173: ldc 8
// 175: invokespecial 162 java/io/InputStreamReader:<init> (Ljava/io/InputStream;Ljava/lang/String;)V
// 178: astore 10
// 180: sipush 1024
// 183: newarray char
// 185: astore 11
// 187: goto +14 -> 201
// 190: aload 9
// 192: aload 11
// 194: iconst_0
// 195: iload 12
// 197: invokevirtual 165 java/lang/StringBuffer:append ([CII)Ljava/lang/StringBuffer;
// 200: pop
// 201: aload 10
// 203: aload 11
// 205: invokevirtual 169 java/io/InputStreamReader:read ([C)I
// 208: dup
// 209: istore 12
// 211: ifgt -21 -> 190
// 214: ldc 173
// 216: aload 9
// 218: invokevirtual 175 java/lang/StringBuffer:toString ()Ljava/lang/String;
// 221: invokevirtual 179 java/lang/String:equals (Ljava/lang/Object;)Z
// 224: ifne +119 -> 343
// 227: aload 9
// 229: invokevirtual 175 java/lang/StringBuffer:toString ()Ljava/lang/String;
// 232: invokestatic 183 cn/jpush/api/MessageResult:fromValue (Ljava/lang/String;)Lcn/jpush/api/MessageResult;
// 235: astore 6
// 237: goto +106 -> 343
// 240: new 187 java/lang/Exception
// 243: dup
// 244: new 189 java/lang/StringBuilder
// 247: dup
// 248: ldc 191
// 250: invokespecial 193 java/lang/StringBuilder:<init> (Ljava/lang/String;)V
// 253: aload 4
// 255: invokevirtual 149 java/net/HttpURLConnection:getResponseCode ()I
// 258: invokevirtual 194 java/lang/StringBuilder:append (I)Ljava/lang/StringBuilder;
// 261: invokevirtual 197 java/lang/StringBuilder:toString ()Ljava/lang/String;
// 264: invokespecial 198 java/lang/Exception:<init> (Ljava/lang/String;)V
// 267: athrow
// 268: astore 7
// 270: aload 7
// 272: invokevirtual 199 java/lang/Exception:printStackTrace ()V
// 275: aload 5
// 277: ifnull +18 -> 295
// 280: aload 5
// 282: invokevirtual 200 java/io/DataOutputStream:close ()V
// 285: goto +10 -> 295
// 288: astore 14
// 290: aload 14
// 292: invokevirtual 203 java/io/IOException:printStackTrace ()V
// 295: aload 4
// 297: ifnull +76 -> 373
// 300: aload 4
// 302: invokevirtual 206 java/net/HttpURLConnection:disconnect ()V
// 305: goto +68 -> 373
// 308: astore 13
// 310: aload 5
// 312: ifnull +18 -> 330
// 315: aload 5
// 317: invokevirtual 200 java/io/DataOutputStream:close ()V
// 320: goto +10 -> 330
// 323: astore 14
// 325: aload 14
// 327: invokevirtual 203 java/io/IOException:printStackTrace ()V
// 330: aload 4
// 332: ifnull +8 -> 340
// 335: aload 4
// 337: invokevirtual 206 java/net/HttpURLConnection:disconnect ()V
// 340: aload 13
// 342: athrow
// 343: aload 5
// 345: ifnull +18 -> 363
// 348: aload 5
// 350: invokevirtual 200 java/io/DataOutputStream:close ()V
// 353: goto +10 -> 363
// 356: astore 14
// 358: aload 14
// 360: invokevirtual 203 java/io/IOException:printStackTrace ()V
// 363: aload 4
// 365: ifnull +8 -> 373
// 368: aload 4
// 370: invokevirtual 206 java/net/HttpURLConnection:disconnect ()V
// 373: aload 6
// 375: areturn
//
// Exception table:
// from to target type
// 9 268 268 java/lang/Exception
// 280 285 288 java/io/IOException
// 9 275 308 finally
// 315 320 323 java/io/IOException
// 348 353 356 java/io/IOException }
#7
没有生成,不知道怎么编译成class文件。。
eclipse有一个目录存放class文件的,一般在工程的跟目录下面的bin目录下面,你进去看看,看是否有class文件。
如果没有class文件,看你反编译出来的java文件是否有报错的?
还有的如下,标注11行的这一句报错ClassName.this:
/* */ package cn.jpush.api;
/* */
/* */ import com.google.gson.Gson;
/* */ import java.util.HashMap;
/* */ import java.util.Map;
/* */
/* */ public class CustomMessageParams extends MessageParams
/* */ {
/* 42 */ private CustomMsgContent msgContent = new CustomMsgContent();
/* */
/* 44 */ public CustomMsgContent getMsgContent() { return this.msgContent; }
/* */
/* */
/* */ public class CustomMsgContent extends MessageParams.MsgContent
/* */ {
/* */ private String contentType;
/* */ private Map<String, Object> extra;
/* */
/* */ public CustomMsgContent()
/* */ {
/* 11 */ super(CustomMessageParams.this);
/* */
/* 13 */ this.contentType = "";
/* */
/* 15 */ this.extra = new HashMap();
/* */ }
/* */ public String getContentType() {
/* 18 */ return this.contentType;
/* */ }
/* */ public void setContentType(String contentType) {
/* 21 */ this.contentType = contentType;
/* */ }
/* */ public Map<String, Object> getExtra() {
/* 24 */ return this.extra;
/* */ }
/* */ public void setExtra(Map<String, Object> extra) {
/* 27 */ this.extra = extra;
/* */ }
/* */
/* */ public String toString() {
/* 31 */ Gson gson = new Gson();
/* 32 */ Map params = new HashMap();
/* 33 */ params.put("title", getTitle());
/* 34 */ params.put("message", getMessage());
/* 35 */ params.put("content_type", getContentType());
/* 36 */ params.put("extras", getExtra());
/* */
/* 38 */ return StringUtils.encodeParam(gson.toJson(params));
/* */ }
/* */ }
/* */ }
#8
没有生成,不知道怎么编译成class文件。。
eclipse有一个目录存放class文件的,一般在工程的跟目录下面的bin目录下面,你进去看看,看是否有class文件。
如果没有class文件,看你反编译出来的java文件是否有报错的?
忽略6、7楼,我在github上找到了源码,1.5环境下编译,eclipse里导出jar包,但是引入到另一个工程中,运行的时候仍然提示版本问题。这是怎么搞的?
#9
你的新工程的jdk多少呢?
还有你的导出的jar中有没有查看里面的文件全不全?
还有你的导出的jar中有没有查看里面的文件全不全?
#10
你的新工程的jdk多少呢?
还有你的导出的jar中有没有查看里面的文件全不全?
解决了,我把Preferences-java-compiler里compiler compliance level改成了1.5再编译打包就好了,以前是1.6。好奇怪。
#11
你的新工程的jdk多少呢?
还有你的导出的jar中有没有查看里面的文件全不全?
解决了,我把Preferences-java-compiler里compiler compliance level改成了1.5再编译打包就好了,以前是1.6。好奇怪。
我在github上找到了源码,1.5环境下编译,eclipse里导出jar包 上面说的这个1.5 环境是什么环境呢?
在eclipse里面,可以通过Preferences-java-compiler 降低jdk的编译时的版本低
#1
先看你反编译的java类有没有正常在jdk1.5环境下生成class文件?
如果生成了,那直接使用eclipse的export jar功能就可以导出jar文件了。
如果生成了,那直接使用eclipse的export jar功能就可以导出jar文件了。
#2
先看你反编译的java类有没有正常在jdk1.5环境下生成class文件?
如果生成了,那直接使用eclipse的export jar功能就可以导出jar文件了。
没有生成,不知道怎么编译成class文件。。
#3
没有生成,不知道怎么编译成class文件。。
eclipse有一个目录存放class文件的,一般在工程的跟目录下面的bin目录下面,你进去看看,看是否有class文件。
如果没有class文件,看你反编译出来的java文件是否有报错的?
#4
用ant编译
#5
用javac编译
#6
没有生成,不知道怎么编译成class文件。。
eclipse有一个目录存放class文件的,一般在工程的跟目录下面的bin目录下面,你进去看看,看是否有class文件。
如果没有class文件,看你反编译出来的java文件是否有报错的?
我知道什么原因了,源代码没有放到src下面。
还有一个问题,就是有的方法反编译处理是错误的,比如下面这一个,反编译是这样的,jd-gui里就用红色字体注释着error。
// ERROR //
protected MessageResult sendPost(String path, boolean enableSSL, byte[] data) { // Byte code:
// 0: aconst_null
// 1: astore 4
// 3: aconst_null
// 4: astore 5
// 6: aconst_null
// 7: astore 6
// 9: iload_2
// 10: ifeq +7 -> 17
// 13: aload_0
// 14: invokevirtual 74 cn/jpush/api/HttpPostClient:initSSL ()V
// 17: new 77 java/net/URL
// 20: dup
// 21: aload_1
// 22: iload_2
// 23: invokestatic 79 cn/jpush/api/BaseURL:getUrlForPath (Ljava/lang/String;Z)Ljava/lang/String;
// 26: invokespecial 85 java/net/URL:<init> (Ljava/lang/String;)V
// 29: astore 7
// 31: aload 7
// 33: invokevirtual 88 java/net/URL:openConnection ()Ljava/net/URLConnection;
// 36: checkcast 92 java/net/HttpURLConnection
// 39: astore 4
// 41: aload 4
// 43: sipush 20000
// 46: invokevirtual 94 java/net/HttpURLConnection:setConnectTimeout (I)V
// 49: aload 4
// 51: sipush 30000
// 54: invokevirtual 98 java/net/HttpURLConnection:setReadTimeout (I)V
// 57: aload 4
// 59: iconst_0
// 60: invokevirtual 101 java/net/HttpURLConnection:setUseCaches (Z)V
// 63: aload 4
// 65: iconst_1
// 66: invokevirtual 105 java/net/HttpURLConnection:setDoOutput (Z)V
// 69: aload 4
// 71: ldc 108
// 73: invokevirtual 110 java/net/HttpURLConnection:setRequestMethod (Ljava/lang/String;)V
// 76: aload 4
// 78: ldc 113
// 80: ldc 115
// 82: invokevirtual 117 java/net/HttpURLConnection:setRequestProperty (Ljava/lang/String;Ljava/lang/String;)V
// 85: aload 4
// 87: ldc 121
// 89: ldc 8
// 91: invokevirtual 117 java/net/HttpURLConnection:setRequestProperty (Ljava/lang/String;Ljava/lang/String;)V
// 94: aload 4
// 96: ldc 123
// 98: ldc 125
// 100: invokevirtual 117 java/net/HttpURLConnection:setRequestProperty (Ljava/lang/String;Ljava/lang/String;)V
// 103: aload 4
// 105: ldc 127
// 107: aload_3
// 108: arraylength
// 109: invokestatic 129 java/lang/String:valueOf (I)Ljava/lang/String;
// 112: invokevirtual 117 java/net/HttpURLConnection:setRequestProperty (Ljava/lang/String;Ljava/lang/String;)V
// 115: new 133 java/io/DataOutputStream
// 118: dup
// 119: aload 4
// 121: invokevirtual 135 java/net/HttpURLConnection:getOutputStream ()Ljava/io/OutputStream;
// 124: invokespecial 139 java/io/DataOutputStream:<init> (Ljava/io/OutputStream;)V
// 127: astore 5
// 129: aload 5
// 131: aload_3
// 132: invokevirtual 142 java/io/DataOutputStream:write ([B)V
// 135: aload 5
// 137: invokevirtual 146 java/io/DataOutputStream:flush ()V
// 140: aload 4
// 142: invokevirtual 149 java/net/HttpURLConnection:getResponseCode ()I
// 145: sipush 200
// 148: if_icmpne +92 -> 240
// 151: aload 4
// 153: invokevirtual 153 java/net/HttpURLConnection:getInputStream ()Ljava/io/InputStream;
// 156: astore 8
// 158: new 157 java/lang/StringBuffer
// 161: dup
// 162: invokespecial 159 java/lang/StringBuffer:<init> ()V
// 165: astore 9
// 167: new 160 java/io/InputStreamReader
// 170: dup
// 171: aload 8
// 173: ldc 8
// 175: invokespecial 162 java/io/InputStreamReader:<init> (Ljava/io/InputStream;Ljava/lang/String;)V
// 178: astore 10
// 180: sipush 1024
// 183: newarray char
// 185: astore 11
// 187: goto +14 -> 201
// 190: aload 9
// 192: aload 11
// 194: iconst_0
// 195: iload 12
// 197: invokevirtual 165 java/lang/StringBuffer:append ([CII)Ljava/lang/StringBuffer;
// 200: pop
// 201: aload 10
// 203: aload 11
// 205: invokevirtual 169 java/io/InputStreamReader:read ([C)I
// 208: dup
// 209: istore 12
// 211: ifgt -21 -> 190
// 214: ldc 173
// 216: aload 9
// 218: invokevirtual 175 java/lang/StringBuffer:toString ()Ljava/lang/String;
// 221: invokevirtual 179 java/lang/String:equals (Ljava/lang/Object;)Z
// 224: ifne +119 -> 343
// 227: aload 9
// 229: invokevirtual 175 java/lang/StringBuffer:toString ()Ljava/lang/String;
// 232: invokestatic 183 cn/jpush/api/MessageResult:fromValue (Ljava/lang/String;)Lcn/jpush/api/MessageResult;
// 235: astore 6
// 237: goto +106 -> 343
// 240: new 187 java/lang/Exception
// 243: dup
// 244: new 189 java/lang/StringBuilder
// 247: dup
// 248: ldc 191
// 250: invokespecial 193 java/lang/StringBuilder:<init> (Ljava/lang/String;)V
// 253: aload 4
// 255: invokevirtual 149 java/net/HttpURLConnection:getResponseCode ()I
// 258: invokevirtual 194 java/lang/StringBuilder:append (I)Ljava/lang/StringBuilder;
// 261: invokevirtual 197 java/lang/StringBuilder:toString ()Ljava/lang/String;
// 264: invokespecial 198 java/lang/Exception:<init> (Ljava/lang/String;)V
// 267: athrow
// 268: astore 7
// 270: aload 7
// 272: invokevirtual 199 java/lang/Exception:printStackTrace ()V
// 275: aload 5
// 277: ifnull +18 -> 295
// 280: aload 5
// 282: invokevirtual 200 java/io/DataOutputStream:close ()V
// 285: goto +10 -> 295
// 288: astore 14
// 290: aload 14
// 292: invokevirtual 203 java/io/IOException:printStackTrace ()V
// 295: aload 4
// 297: ifnull +76 -> 373
// 300: aload 4
// 302: invokevirtual 206 java/net/HttpURLConnection:disconnect ()V
// 305: goto +68 -> 373
// 308: astore 13
// 310: aload 5
// 312: ifnull +18 -> 330
// 315: aload 5
// 317: invokevirtual 200 java/io/DataOutputStream:close ()V
// 320: goto +10 -> 330
// 323: astore 14
// 325: aload 14
// 327: invokevirtual 203 java/io/IOException:printStackTrace ()V
// 330: aload 4
// 332: ifnull +8 -> 340
// 335: aload 4
// 337: invokevirtual 206 java/net/HttpURLConnection:disconnect ()V
// 340: aload 13
// 342: athrow
// 343: aload 5
// 345: ifnull +18 -> 363
// 348: aload 5
// 350: invokevirtual 200 java/io/DataOutputStream:close ()V
// 353: goto +10 -> 363
// 356: astore 14
// 358: aload 14
// 360: invokevirtual 203 java/io/IOException:printStackTrace ()V
// 363: aload 4
// 365: ifnull +8 -> 373
// 368: aload 4
// 370: invokevirtual 206 java/net/HttpURLConnection:disconnect ()V
// 373: aload 6
// 375: areturn
//
// Exception table:
// from to target type
// 9 268 268 java/lang/Exception
// 280 285 288 java/io/IOException
// 9 275 308 finally
// 315 320 323 java/io/IOException
// 348 353 356 java/io/IOException }
#7
没有生成,不知道怎么编译成class文件。。
eclipse有一个目录存放class文件的,一般在工程的跟目录下面的bin目录下面,你进去看看,看是否有class文件。
如果没有class文件,看你反编译出来的java文件是否有报错的?
还有的如下,标注11行的这一句报错ClassName.this:
/* */ package cn.jpush.api;
/* */
/* */ import com.google.gson.Gson;
/* */ import java.util.HashMap;
/* */ import java.util.Map;
/* */
/* */ public class CustomMessageParams extends MessageParams
/* */ {
/* 42 */ private CustomMsgContent msgContent = new CustomMsgContent();
/* */
/* 44 */ public CustomMsgContent getMsgContent() { return this.msgContent; }
/* */
/* */
/* */ public class CustomMsgContent extends MessageParams.MsgContent
/* */ {
/* */ private String contentType;
/* */ private Map<String, Object> extra;
/* */
/* */ public CustomMsgContent()
/* */ {
/* 11 */ super(CustomMessageParams.this);
/* */
/* 13 */ this.contentType = "";
/* */
/* 15 */ this.extra = new HashMap();
/* */ }
/* */ public String getContentType() {
/* 18 */ return this.contentType;
/* */ }
/* */ public void setContentType(String contentType) {
/* 21 */ this.contentType = contentType;
/* */ }
/* */ public Map<String, Object> getExtra() {
/* 24 */ return this.extra;
/* */ }
/* */ public void setExtra(Map<String, Object> extra) {
/* 27 */ this.extra = extra;
/* */ }
/* */
/* */ public String toString() {
/* 31 */ Gson gson = new Gson();
/* 32 */ Map params = new HashMap();
/* 33 */ params.put("title", getTitle());
/* 34 */ params.put("message", getMessage());
/* 35 */ params.put("content_type", getContentType());
/* 36 */ params.put("extras", getExtra());
/* */
/* 38 */ return StringUtils.encodeParam(gson.toJson(params));
/* */ }
/* */ }
/* */ }
#8
没有生成,不知道怎么编译成class文件。。
eclipse有一个目录存放class文件的,一般在工程的跟目录下面的bin目录下面,你进去看看,看是否有class文件。
如果没有class文件,看你反编译出来的java文件是否有报错的?
忽略6、7楼,我在github上找到了源码,1.5环境下编译,eclipse里导出jar包,但是引入到另一个工程中,运行的时候仍然提示版本问题。这是怎么搞的?
#9
你的新工程的jdk多少呢?
还有你的导出的jar中有没有查看里面的文件全不全?
还有你的导出的jar中有没有查看里面的文件全不全?
#10
你的新工程的jdk多少呢?
还有你的导出的jar中有没有查看里面的文件全不全?
解决了,我把Preferences-java-compiler里compiler compliance level改成了1.5再编译打包就好了,以前是1.6。好奇怪。
#11
你的新工程的jdk多少呢?
还有你的导出的jar中有没有查看里面的文件全不全?
解决了,我把Preferences-java-compiler里compiler compliance level改成了1.5再编译打包就好了,以前是1.6。好奇怪。
我在github上找到了源码,1.5环境下编译,eclipse里导出jar包 上面说的这个1.5 环境是什么环境呢?
在eclipse里面,可以通过Preferences-java-compiler 降低jdk的编译时的版本低