没有主类的一堆java文件如何打包成jar? 先看你反编译的java类有没有正常在jdk1.5环境下生成class文件?如果生成了,那直接使用eclipse的export jar功能就可以导出jar文件了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没有生成,不知道怎么编译成class文件。。 eclipse有一个目录存放class文件的,一般在工程的跟目录下面的bin目录下面,你进去看看,看是否有class文件。如果没有class文件,看你反编译出来的java文件是否有报错的? 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 } 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));/* */ }/* */ }/* */ } eclipse有一个目录存放class文件的,一般在工程的跟目录下面的bin目录下面,你进去看看,看是否有class文件。如果没有class文件,看你反编译出来的java文件是否有报错的?忽略6、7楼,我在github上找到了源码,1.5环境下编译,eclipse里导出jar包,但是引入到另一个工程中,运行的时候仍然提示版本问题。这是怎么搞的? 你的新工程的jdk多少呢?还有你的导出的jar中有没有查看里面的文件全不全? 解决了,我把Preferences-java-compiler里compiler compliance level改成了1.5再编译打包就好了,以前是1.6。好奇怪。 解决了,我把Preferences-java-compiler里compiler compliance level改成了1.5再编译打包就好了,以前是1.6。好奇怪。我在github上找到了源码,1.5环境下编译,eclipse里导出jar包 上面说的这个1.5 环境是什么环境呢?在eclipse里面,可以通过Preferences-java-compiler 降低jdk的编译时的版本低 java学习进入困境了,请前辈们来解惑 java 中switch条件 JAVA怎么实现把图片格式转换成ICO格式的图标(急求啊) 关于字符串解析的问题 java高手请进 DisplayTage 分页问题 数据输入数据库,再输出的老问题 跪求清华同方报像头驱动! weblogic12c管理控制台为什么是英文的? Servlet实现上载 java上传读取FTP文件出现超时 Jquery+ssh 加载更多,页面该如何操作
如果没有class文件,看你反编译出来的java文件是否有报错的?
如果没有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 }
如果没有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));
/* */ }
/* */ }
/* */ }
如果没有class文件,看你反编译出来的java文件是否有报错的?
忽略6、7楼,我在github上找到了源码,1.5环境下编译,eclipse里导出jar包,但是引入到另一个工程中,运行的时候仍然提示版本问题。这是怎么搞的?
还有你的导出的jar中有没有查看里面的文件全不全?
我在github上找到了源码,1.5环境下编译,eclipse里导出jar包 上面说的这个1.5 环境是什么环境呢?
在eclipse里面,可以通过Preferences-java-compiler 降低jdk的编译时的版本低