给定现有的jar文件和源代码,如何更改代码?

ShanZhengYang

我正在使用从SourceForge下载的一些Java代码。我有源代码,但是用户被引导通过jar文件运行代码:

java -jar jarfile.jar -i inputfile.txt -o $outputdirectory

自然地,我可以jarfile.jar使用以下命令查看其中的内容,

jar tf jarfile.jar

这是我的问题:我想在源代码中进行一些更改,然后再运行。我该怎么做呢?用户通常

(1)在jarfile.jar中更改已编译的Java代码?听起来像是一团糟

(2)再次将源代码包装到jar文件中?

我将如何获取源代码(已进行更改)并创建一个新.jar文件?

马特·琼斯(Mat Jones)

在此处找到以下代码以提取JAR内容:

import java.io.*;
import java.util.*;
import java.util.jar.*;
import java.util.zip.ZipException;

public class jara {
    public static void main (String args[])throws IOException,ZipException
    {
       JarFile jarFile = new JarFile("jarfile.jar");
       Enumeration en = jarFile.entries();
       while (en.hasMoreElements()) {
         String ent=proc(en.nextElement());
         if(ent.indexOf("/")>0)
         {
         String fil=ent.substring(0,ent.indexOf("/"));
         System.out.println(fil);
         File local=new File(fil);
         if(!local.exists())
         local.mkdirs();
         }
         if(ent.indexOf(".")>0)
         {
         int n=ent.length();
         String fil1=ent.substring(ent.lastIndexOf("/")+1,n);
         System.out.println(fil1);
          extract(jarFile.getName(),ent);  
         }

        }
     }

       public static String proc(Object obj)
       {
       JarEntry entry = (JarEntry)obj;
       String name = entry.getName();
       System.out.println("\nEntry Name: "+name);
       return(name);
       }

       public static void extract(String jarName,String entryName)throws IOException,ZipException
      {
      JarFile jar = new JarFile(jarName);
          System.out.println(jarName + " opened.");

          try {
             // Get the entry and its input stream.

             JarEntry entry = jar.getJarEntry(entryName);

             // If the entry is not null, extract it. Otherwise, print a 
             // message.

             if (entry != null) {
                // Get an input stream for the entry.

                InputStream entryStream = jar.getInputStream(entry);

                try {
                   // Create the output file (clobbering the file if it exists).

                   FileOutputStream file = new FileOutputStream(entry.getName());

                   try {
                      // Allocate a buffer for reading the entry data.

                      byte[] buffer = new byte[1024];
                      int bytesRead;

                      // Read the entry data and write it to the output file.

                      while ((bytesRead = entryStream.read(buffer)) != -1) {
                         file.write(buffer, 0, bytesRead);
                      }

                      System.out.println(entry.getName() + " extracted.");
                   }
                   finally {
                      file.close();
                   }
                }
                finally {
                   entryStream.close();
                }
             }
             else {
                System.out.println(entryName + " not found.");
             } // end if
          }
          finally {
             jar.close();
             System.out.println(jarName + " closed.");
          }
       }
     }

然后,只需读取Java源文件,就好像它们是文本文件一样,对其进行修改,然后将其写入新文件。

然后,要打包jar,可以使用本教程该教程使用Java Compiler API

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

给定源代码,如何使用CFFI调用现有的C函数?

来自分类Dev

给定源代码,如何使用CFFI调用现有的C函数?

来自分类Dev

如何更改现有的Atom.io代码段

来自分类Dev

如何使用现有的源代码在Eclipse中进行集成?

来自分类Dev

如何从.jar文件获取源代码

来自分类Dev

我们可以在Spring MVC项目源代码中使用现有的Servlet吗,如果可以,那么如何配置我的web.xml文件

来自分类Dev

更改现有网站源代码上的图像

来自分类Dev

如何将具有现有文件的本地项目导入到“源代码树”

来自分类Dev

如何使用VisualSVN Server将现有的Visual Studio解决方案置于源代码控制之下?

来自分类Dev

如何将现有的SQL Server数据库添加到TFS源代码管理中?

来自分类Dev

如何从Java代码修改现有的docker-compose文件

来自分类Dev

如何为现有的Windows驱动程序代码编写SOURCES文件?

来自分类Dev

如何用源代码(.java文件)创建Java jar文件?

来自分类Dev

在另一个项目/命名空间中使用现有的源代码

来自分类Dev

repo:从现有的.repo目录中签出源代码,而无需额外下载

来自分类Dev

如何在Android下重用现有的Qt代码?

来自分类Dev

如何改善我现有的GetOpenfile函数代码

来自分类Dev

如何从现有的HTML模板代码创建Wordpress菜单?

来自分类Dev

如何从jar文件将源代码导入Eclipse?

来自分类Dev

如何从.jar源代码中获取文件路径

来自分类Dev

如何从源代码构建OkHttp3 jar文件

来自分类Dev

如何检查weka.jar和weka源代码的版本

来自分类Dev

如何检查weka.jar和weka源代码的版本

来自分类Dev

如何更改redis源代码?

来自分类Dev

我只有apk文件(没有源代码)如何签名和zip对齐?

来自分类Dev

从现有的python代码创建方法

来自分类Dev

如何从现有的DEB文件更改为Centos RPM

来自分类Dev

如何更改页面的源代码?使用硒和java

来自分类Dev

用python读取.jar文件的源代码

Related 相关文章

  1. 1

    给定源代码,如何使用CFFI调用现有的C函数?

  2. 2

    给定源代码,如何使用CFFI调用现有的C函数?

  3. 3

    如何更改现有的Atom.io代码段

  4. 4

    如何使用现有的源代码在Eclipse中进行集成?

  5. 5

    如何从.jar文件获取源代码

  6. 6

    我们可以在Spring MVC项目源代码中使用现有的Servlet吗,如果可以,那么如何配置我的web.xml文件

  7. 7

    更改现有网站源代码上的图像

  8. 8

    如何将具有现有文件的本地项目导入到“源代码树”

  9. 9

    如何使用VisualSVN Server将现有的Visual Studio解决方案置于源代码控制之下?

  10. 10

    如何将现有的SQL Server数据库添加到TFS源代码管理中?

  11. 11

    如何从Java代码修改现有的docker-compose文件

  12. 12

    如何为现有的Windows驱动程序代码编写SOURCES文件?

  13. 13

    如何用源代码(.java文件)创建Java jar文件?

  14. 14

    在另一个项目/命名空间中使用现有的源代码

  15. 15

    repo:从现有的.repo目录中签出源代码,而无需额外下载

  16. 16

    如何在Android下重用现有的Qt代码?

  17. 17

    如何改善我现有的GetOpenfile函数代码

  18. 18

    如何从现有的HTML模板代码创建Wordpress菜单?

  19. 19

    如何从jar文件将源代码导入Eclipse?

  20. 20

    如何从.jar源代码中获取文件路径

  21. 21

    如何从源代码构建OkHttp3 jar文件

  22. 22

    如何检查weka.jar和weka源代码的版本

  23. 23

    如何检查weka.jar和weka源代码的版本

  24. 24

    如何更改redis源代码?

  25. 25

    我只有apk文件(没有源代码)如何签名和zip对齐?

  26. 26

    从现有的python代码创建方法

  27. 27

    如何从现有的DEB文件更改为Centos RPM

  28. 28

    如何更改页面的源代码?使用硒和java

  29. 29

    用python读取.jar文件的源代码

热门标签

归档