没有主类的一堆java文件如何打包成jar?

kahnnash 2014-07-04 07:17:55
原jar包是1.6下编译的,由于我们服务器java版本都是1.5,没法使用,我把jar包反编译后,想在1.5下重新打包,总是失败。打成的jar包解压后里面还是一堆java文件,不是class。
怎么办?
...全文
569 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
日知己所无 2014-07-05
  • 打赏
  • 举报
回复
用javac编译
姜小白- 2014-07-05
  • 打赏
  • 举报
回复
引用 10 楼 kahnnash 的回复:
[quote=引用 9 楼 magi1201 的回复:] 你的新工程的jdk多少呢? 还有你的导出的jar中有没有查看里面的文件全不全?
解决了,我把Preferences-java-compiler里compiler compliance level改成了1.5再编译打包就好了,以前是1.6。好奇怪。[/quote] 我在github上找到了源码,1.5环境下编译,eclipse里导出jar包 上面说的这个1.5 环境是什么环境呢? 在eclipse里面,可以通过Preferences-java-compiler 降低jdk的编译时的版本低
kahnnash 2014-07-05
  • 打赏
  • 举报
回复
引用 9 楼 magi1201 的回复:
你的新工程的jdk多少呢? 还有你的导出的jar中有没有查看里面的文件全不全?
解决了,我把Preferences-java-compiler里compiler compliance level改成了1.5再编译打包就好了,以前是1.6。好奇怪。
姜小白- 2014-07-05
  • 打赏
  • 举报
回复
你的新工程的jdk多少呢? 还有你的导出的jar中有没有查看里面的文件全不全?
kahnnash 2014-07-05
  • 打赏
  • 举报
回复
引用 3 楼 magi1201 的回复:
[quote=引用 2 楼 kahnnash 的回复:] 没有生成,不知道怎么编译成class文件。。
eclipse有一个目录存放class文件的,一般在工程的跟目录下面的bin目录下面,你进去看看,看是否有class文件。 如果没有class文件,看你反编译出来的java文件是否有报错的? [/quote] 忽略6、7楼,我在github上找到了源码,1.5环境下编译,eclipse里导出jar包,但是引入到另一个工程中,运行的时候仍然提示版本问题。这是怎么搞的?
kahnnash 2014-07-05
  • 打赏
  • 举报
回复
引用 3 楼 magi1201 的回复:
[quote=引用 2 楼 kahnnash 的回复:] 没有生成,不知道怎么编译成class文件。。
eclipse有一个目录存放class文件的,一般在工程的跟目录下面的bin目录下面,你进去看看,看是否有class文件。 如果没有class文件,看你反编译出来的java文件是否有报错的? [/quote] 还有的如下,标注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));
/*    */     }
/*    */   }
/*    */ }
kahnnash 2014-07-05
  • 打赏
  • 举报
回复
引用 3 楼 magi1201 的回复:
[quote=引用 2 楼 kahnnash 的回复:] 没有生成,不知道怎么编译成class文件。。
eclipse有一个目录存放class文件的,一般在工程的跟目录下面的bin目录下面,你进去看看,看是否有class文件。 如果没有class文件,看你反编译出来的java文件是否有报错的? [/quote] 我知道什么原因了,源代码没有放到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 } 
teemai 2014-07-04
  • 打赏
  • 举报
回复
用ant编译
姜小白- 2014-07-04
  • 打赏
  • 举报
回复
引用 2 楼 kahnnash 的回复:
没有生成,不知道怎么编译成class文件。。
eclipse有一个目录存放class文件的,一般在工程的跟目录下面的bin目录下面,你进去看看,看是否有class文件。 如果没有class文件,看你反编译出来的java文件是否有报错的?
kahnnash 2014-07-04
  • 打赏
  • 举报
回复
引用 1 楼 magi1201 的回复:
先看你反编译的java类有没有正常在jdk1.5环境下生成class文件? 如果生成了,那直接使用eclipse的export jar功能就可以导出jar文件了。
没有生成,不知道怎么编译成class文件。。
姜小白- 2014-07-04
  • 打赏
  • 举报
回复
先看你反编译的java类有没有正常在jdk1.5环境下生成class文件? 如果生成了,那直接使用eclipse的export jar功能就可以导出jar文件了。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧