精华内容
下载资源
问答
  • java 从jar包中读取资源文件

    千次阅读 2016-03-28 15:38:16
     在代码中读取一些资源文件(比如图片,音乐,文本等等),在集成环境...但当打包成一个可执行的jar包(将资源文件一并打包)以后,这些资源文件找不到,如下代码: Java代码 [java] view plain copy

    (转载)http://blog.csdn.net/b_h_l/article/details/7767829

     在代码中读取一些资源文件(比如图片,音乐,文本等等),在集成环境(Eclipse)中运行的时候没有问题。但当打包成一个可执行的jar包(将资源文件一并打包)以后,这些资源文件找不到,如下代码:

    Java代码  
    [java]  view plain  copy
    1. //源代码1:    
    2. package edu.hxraid;    
    3. import java.io.*;    
    4. public class Resource {    
    5.     public  void getResource() throws IOException{    
    6.         File file=new File("bin/resource/res.txt");    
    7.         BufferedReader br=new BufferedReader(new FileReader(file));    
    8.         String s="";    
    9.         while((s=br.readLine())!=null)    
    10.             System.out.println(s);    
    11.     }    
    12. }       
            这段代码写在Eclipse建立的java Project中,其目录为:(其中将资源文件res.txt放在了bin目录下,以便打成jar包)
          1、src/
                  src/edu/hxraid/Resource.java
          2、bin/
                  bin/resource/res.txt
                  bin/edu/hxraid/Resource.class
          很显然运行源代码1是能够找到资源文件res.txt。但当我们把整个工程打成jar包以后(ResourceJar.jar),这个jar包内的目录为:
                  edu/hxraid/Resource.class
                  resource/res.txt
     
           而这时jar包中Resource.class字节码:ldc <String "bin/resource/res.txt"> [20] 将无法定位到jar包中的res.txt位置上。就算把bin/目录去掉:ldc <String "resource/res.txt"> [20] 仍然无法定位到jar包中res.txt上。
          这主要是因为jar包是一个单独的文件而非文件夹,绝对不可能通过"file:/e:/.../ResourceJar.jar/resource /res.txt"这种形式的文件URL来定位res.txt。所以即使是相对路径,也无法定位到jar文件内的txt文件(读者也许对这段原因解释有些费解,在下面我们会用一段代码运行的结果来进一步阐述)。
     
              那么把资源打入jar包,无论ResourceJar.jar在系统的什么路径下,jar包中的字节码程序都可以找到该包中的资源。这会是幻想吗?


          当然不是,我们可以用类装载器(ClassLoader)来做到这一点:
              (1) ClassLoader 是类加载器的抽象类。它可以在运行时动态的获取加载类的运行信息。 可以这样说,当我们调用ResourceJar.jar中的Resource类时,JVM加载进Resource类,并记录下Resource运行时信息(包括Resource所在jar包的路径信息)。而ClassLoader类中的方法可以帮助我们动态的获取这些信息:
              ● public URL getResource(String name) 
                查找具有给定名称的资源。资源是可以通过类代码以与代码基无关的方式访问的一些数据(图像、声音、文本等)。并返回资源的URL对象。
              ● public InputStream getResourceAsStream(String name); 
                 返回读取指定资源的输入流。这个方法很重要,可以直接获得jar包中文件的内容。
             
               (2) ClassLoader是abstract的,不可能实例化对象,更加不可能通过ClassLoader调用上面两个方法。所以我们真正写代码的时候,是通过Class类中的getResource()和getResourceAsStream()方法,这两个方法会委托ClassLoader中的getResource()和getResourceAsStream()方法 。好了,现在我们重新写一段Resource代码,来看看上面那段费解的话是什么意思了:
    Java代码  
    [java]  view plain  copy
    1. //源代码2:    
    2. package edu.hxraid;    
    3. import java.io.*;    
    4. import java.net.URL;    
    5. public class Resource {    
    6.     public  void getResource() throws IOException{      
    7.               //查找指定资源的URL,其中res.txt仍然开始的bin目录下     
    8.         URL fileURL=this.getClass().getResource("/resource/res.txt");     
    9.         System.out.println(fileURL.getFile());    
    10.     }    
    11.     public static void main(String[] args) throws IOException {    
    12.         Resource res=new Resource();    
    13.         res.getResource();    
    14.     }    
    15. }    
            运行这段源代码结果:/E:/Code_Factory/WANWAN/bin/resource/res.txt  (../ Code_Factory/WANWAN/.. 是java project所在的路径)
               我们将这段代码打包成ResourceJar.jar ,并将ResourceJar.jar放在其他路径下(比如 c:\ResourceJar.jar)。然后另外创建一个java project并导入ResourceJar.jar,写一段调用jar包中Resource类的测试代码:
    Java代码  
    [java]  view plain  copy
    1. import java.io.IOException;    
    2. import edu.hxraid.Resource;    
    3. public class TEST {    
    4.     public static void main(String[] args) throws IOException {    
    5.         Resource res=new Resource();    
    6.         res.getResource();    
    7.     }    
    8. }    
               这时的运行结果是:file:/C:/ResourceJar.jar!/resource/res.txt
                我们成功的在运行时动态获得了res.txt的位置。然而,问题来了,你是否可以通过下面这样的代码来得到res.txt文件?
                          File f=new File("C:/ResourceJar.jar!/resource/res.txt");
                当然不可能,因为".../ResourceJar.jar!/resource/...."并不是文件资源定位符的格式 (jar中资源有其专门的URL形式: jar:<url>!/{entry} )。所以,如果jar包中的类源代码用File f=new File(相对路径);的形式,是不可能定位到文件资源的。这也是为什么源代码1打包成jar文件后,调用jar包时会报出FileNotFoundException的症结所在了。
     注: 我们可以通过 new ImageIcon(类.class.getResource("XX.gif"))获得ImageIcon对象,但如果你要获得jar文件中的资源文件流,上面方法行不通。

               (3) 我们不能用常规操作文件的方法来读取ResourceJar.jar中的资源文件res.txt,但可以通过Class类的getResourceAsStream()方法来获取 ,这种方法是如何读取jar中的资源文件的,这一点对于我们来说是透明的。我们将Resource.java改写成
    Java代码  
    [java]  view plain  copy
    1. //源代码3:    
    2. package edu.hxraid;    
    3. import java.io.*;    
    4. public class Resource {    
    5.     public void getResource() throws IOException{    
    6.         //返回读取指定资源的输入流    
    7.         InputStream is=this.getClass().getResourceAsStream("/resource/res.txt");       
    8.        //InputStream is=当前类.class.getResourceAsStream("XX.config");     
    9.         BufferedReader br=new BufferedReader(new InputStreamReader(is));    
    10.         String s="";    
    11.         while((s=br.readLine())!=null)    
    12.             System.out.println(s);    
    13.     }    
    14. }    
               我们将java工程下/bin目录中的edu/hxraid/Resource.class和资源文件resource/res.txt一并打包进ResourceJar.jar中,不管jar包在系统的任何目录下,调用jar包中的Resource类都可以获得jar包中的res.txt资源,再也不会找不到res.txt文件了。

     (4) 上面方法只提供了从jar中读资源文件功能,没有提供改写jar中资源文件方法,

        通过URL、URLConnection来得到jar中资源文件的输入流(InputStream)和输出流 (OutputStream),不仅可以从jar中读取资源文件而且还可以改写jar中资源文件

    [java]  view plain  copy
    1. URL url = 类.class.getResource("XX.config");  
    2. URLConnection  urlConnection=url.openConnection();  
    3. //读资源文件  
    4. InputStream inputStream=urlConnection.getInputStream();  
    5. BufferedReader in=new BufferedReader(new InputStreamReader(inputStream,"utf-8"));  
    6. //写资源文件  
    7. OutputStream outputStream=urlConnection.getOutputStream();  
    8. PrintStream printStream=new PrintStream(outputStream);  

    补充:刚测试了一下,利用URL、URLConnection来得到jar中资源文件的输出流 (OutputStream)不好使,提示java.net.UnknownServiceException: protocol doesn't support output,由于上述改写jar中资源文件方法不好使。

          我们可以换个角度,不要死扣非得读写jar中的资源文件,只有当软件第一次启动程序时才读jar中的资源文件,并将其备份到用户主目录或用户当前目录中,以后读写用户目录中的资源文件即可。首先我们把资源文件打包到jar中,程序第一次程序启动时,仍然从jar中读资源文件信息(显然可以实现),并将所读取的信息保存到内存中(如:每次启动程序时,都将资源文件信息读到List或Map集合中保存),程序运行期间对资源文件的更新都是对List和Map的更新,当第一次关闭程序时,才将内存中保存的资源信息写到System.getProperty("user.home")用户主目录(或System.getProperty("user.dir")用户当前目录)中,并生成一个与jar中资源文件一模一样的文件,以后程序启动时都从用户目录的资源文件中读写。只有当用户目录中的资源文件不存在时(这里程序可以判断一下),才从jar中的资源文件读信息,因此jar中的资源文件只是起到原始备份作用

           当然,这样做会有2个问题(1):就是每次程序安装在一新机器上时,读取的资源文件信息都是jar中的原始资源信息,中途我们可能更新过,解决方法:将更新的资源文件再一次打包到jar中(2):由于每次对资源文件信息的更新都是对对应的内存数据的更新,只有在关闭程序时才写回到资源文件中,没有随改随写,这样就可能造成这样一种后果,如果程序不是很健壮,程序中途bug并无响应,此时只能强制关闭,务必造成更新的资源信息没有写回到资源文件中!!!解决方案:每次对内存中资源信息的更新后马上写回到文件中,利:保证了程序bug后资源文件仍然是最新的,弊:这样会造成频繁写文件操作,程序性能降低,(也不一定哦,试具体程序来看,由于它是资源文件,一般不会更新很频繁)。

    (5)利用java.util.jar.JarFile?????没试过

    从一个jar文件读取内容,然后写回一个jar文件。
    首先通过一个JarFile file = new JarFile(fileName);
    然后file.entries()可以得到一个jar文件内部元素的迭代器。同过这个迭代器我们可以获得所有的JarEntry,
    然后通过InputStream is = jarFile.getInputStream(jarEntry);可以获得这个JarEntry的输入流。
    最后将is的内容同过JarOutputStream out = new JarOutputStream(new FileOutputStream(distJar));的out的out.write(int data)方法写入目标jar文件。

    展开全文
  • 通过java代码动态生成jar文件

    千次阅读 2019-03-17 20:25:53
    java工程代码编写结束准备生成jar文件时,常见的方法是通过工程构建工具(如:maven、Ant)自动创建或者通过IDE导出jar包。其实还可以自己编写java代码动态生成jar文件。 工程截图 HelloWorld.java 作为工程的...

         当java工程代码编写结束准备生成jar文件时,常见的方法是通过工程构建工具(如:maven、Ant)自动创建或者通过IDE导出jar包。其实还可以自己编写java代码动态生成jar文件。

    工程截图

    工程截图

    • HelloWorld.java 作为工程的业务主类,为了便于演示,仅输出hello,world
    • PackageUtil.java 生成jar工具类
    • PackageTest.java 生成jar的主类,调用PackageUtil.java。

    使用方法

    1. PackageUtil.java中配置生成jar路径,默认是java.io.temp路径
    2. PackageTest.java 运行类中的main方法
    3. 在jar目录中运行

      java -jar edwin-8662688819079744070.jar

    4. 输出 hello,world

    代码

    • PackageUtil.java
    /**
     * Licensed to the Apache Software Foundation (ASF) under one
     * or more contributor license agreements.  See the NOTICE file
     * distributed with this work for additional information
     * regarding copyright ownership.  The ASF licenses this file
     * to you under the Apache License, Version 2.0 (the
     * "License"); you may not use this file except in compliance
     * with the License.  You may obtain a copy of the License at
     *
     *     http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    
    package packageutil;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.jar.JarEntry;
    import java.util.jar.JarOutputStream;
    import java.util.jar.Manifest;
    
    public class PackageUtil {
    
    
    
    	/**
    	 * Create a temp jar file in "java.io.tmpdir".
    	 * 
    	 * @param root
    	 * @return
    	 * @throws IOException
    	 */
    	public static File createTempJar(String root) throws IOException {
    		if (!new File(root).exists()) {
    			return null;
    		}
    		Manifest manifest = new Manifest();
    		manifest.getMainAttributes().putValue("Manifest-Version", "1.0");
    		manifest.getMainAttributes().putValue("Main-Class", "Show");//指定Main Class
    		
    		final File jarFile = File.createTempFile("edwin-", ".jar", new File(System
    				.getProperty("java.io.tmpdir")));
    
    		//程序结束后,通过以下代码删除生成的jar文件
    //		Runtime.getRuntime().addShutdownHook(new Thread() {
    //			public void run() {
    //				jarFile.delete();
    //			}
    //		});
    
    		JarOutputStream out = new JarOutputStream(new FileOutputStream(jarFile),
    				manifest);
    		createTempJarInner(out, new File(root), "");
    		out.flush();
    		out.close();
    		return jarFile;
    	}
    
    	private static void createTempJarInner(JarOutputStream out, File f,
    			String base) throws IOException {
    		if (f.isDirectory()) {
    			File[] fl = f.listFiles();
    			if (base.length() > 0) {
    				base = base + "/";
    			}
    			for (int i = 0; i < fl.length; i++) {
    				createTempJarInner(out, fl[i], base + fl[i].getName());
    			}
    		} else {
    			out.putNextEntry(new JarEntry(base));
    			FileInputStream in = new FileInputStream(f);
    			byte[] buffer = new byte[1024];
    			int n = in.read(buffer);
    			while (n != -1) {
    				out.write(buffer, 0, n);
    				n = in.read(buffer);
    			}
    			in.close();
    		}
    	}
    }
    
    • PackageTest.java
    package packageutil;
    
    import java.io.File;
    
    public class PackageTest {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args)throws Exception {
    		
    		File f=PackageUtil.createTempJar("bin");
    		
    		System.out.println(f.getPath());
    	
    //	while(true){
    //		
    //	}
    	}
    }
    
    
    • HelloWorld.java
    public class HelloWorld {
    
    	public static void main(String[] args) {
    		System.out.println("hello ,world");
    	}
    }
    
    

    END
    展开全文
  • 常用任务(copy,move,delete,mkdir,javac,java,jar)

    常用任务(copy,move,delete,mkdir,javac,java,jar)

    <?xml version="1.0" encoding="gb2312" ?>
    <project name="projectStudy">
         <!--输出内置的属性值-->
            <target  name ="showSelfProperty">
                
                    <echo  message ="The base dir is: ${basedir}"/>
               
                <echo  message ="The base dir is: ${ant.file}"/>
                <echo  message ="The base dir is: ${ant.version}"/>
                <echo  message ="The base dir is: ${ant.project.name}"/>
                  <echo  message ="The base dir is: ${ant.java.version}"/>
            </target>
     
         <!--targetB任务依赖targetA任务( 当执行B是A先执行)-->
      <target  name ="targetA"  if ="ant.java.version">
                    <echo  message ="Java Version: ${ant.java.version}"/>
             </target >
             <target  name ="targetB"  depends ="targetA"  unless ="amigo">
                    <description >
                                 a depend example!
                    </description >
                    <echo  message ="The base dir is: ${basedir}"/>
             </target>
     
        <!--自定义属性,并输出-->
     <property name="stuName" value="张三"></property>
     <property name="stuAge" value="25"></property>
     <target name="DefineMyProperty">
      <echo message="sturName=${stuName}"/>
      <echo message="stuAge=${stuAge}"/>
     </target>
     
     <!--Ant常用任务练习-->
     
     
     <!--copy 任务,路径默认为build.xml文件同一个目录-->
     
     <target name="copyTarget">
      <!--将绝对路径的文件复制到指定的目录,"${basedir}\"可省略(因为是默认值)-->
      <copy file="E:\学习笔记\Struts2\10-2.doc" tofile="${basedir}\copy.doc"/>
      
      <!--将一个目录的所有文件,复制到另一个目录-->
      <copy todir="E:\学习笔记\AntBackup">

                <fileset dir="E:\学习笔记\Ant"/>

       </copy>
      
      <!--将与build.xml文件在同一个目录的copy.txt文件,复制到另一个目录-->
      <copy file="copy.txt" todir="E:\学习笔记\AntBackup">
      </copy>
      
      
      
     </target>
     
     <!--delete任务-->
     <target name="deleteTarget">
      <!--删除指定的文件,不使用绝对路径,表示以${baseDir}为根目录-->
      <delete file="copy.txt"/>
      
      <!--删除目录
      <delete dir="E:\学习笔记\AntBackup"/>
      -->
      
      <!--删除指定目录的,指定类型文件-->
      <!--删除E:\学习笔记\AntBacup目录下,所有的doc文件,包括空目录(空目录实际没有删掉,原因不知)-->
      <delete includeEmptyDirs="true">

       <fileset dir="E:\学习笔记\AntBacup" includes="**/*.doc"/>

      </delete>


     </target>
     
     <!--move任务-->
     <target name="moveTarget">
      
      <!--将copy.doc文件删除后,再复制一份到copy1.doc
      <move file="copy.doc" tofile="copy1.doc"/>
      -->
      <!--将copy1.doc移动到E:\学习笔记\AntBacup
      <move file="copy1.doc" todir="E:\学习笔记\AntBacup"/>
      -->
      
      <!--将E:\学习笔记\Ant所有文件移动到E:\学习笔记\AntBacup,移动后会删除E:\学习笔记\Ant目录-->
      <move todir="E:\学习笔记\AntBacup">
        <fileset dir="E:\学习笔记\Ant"/>
      </move>


      


     </target>
     
     
     <!--mkdir创建目录任务-->
     <target name="mkdirTarget">
      <!--在build.xml同一个目录下,再创建一个目录build-->
      <mkdir dir="build"/>
        </target>
     
     <!--echo任务-->
     <target name="echoTarget">
      <!--将message信息输出到指定文件,采用追加的方式(即当文件存在时,向后追加内容)-->
      <!--当log目录,system.log文件不存在时,会自动创建-->
      <echo message="Hello,Amigo" file="logs/system.log" append="true"/>
     </target>
     
     
     
     <!--javac,java任务-->
     
     <!-- 将五子棋项目源码编译成class文件,并且运行-->
     
     <!--指定五子棋项目的路径,和class的存放地址-->
     
     <property name="rootPro" value="E:\学习笔记\Java五子棋\FiveCheerProject"></property>
     <property name="rootBuild" value="${rootPro}\build"></property>
     <property name="rootBuildClasses" value="${rootBuild}\classes"></property>
     
      <target  name ="clean">
             <delete  dir ="${rootBuild}"/>
      </target>

      <target name="compile" depends ="clean">
             <mkdir  dir ="${rootBuildClasses}"/>
             <javac  srcdir ="${rootPro}\src"  destdir ="${rootBuildClasses}"/>
          </target>

      <!--实际运行发现可在Main方法中打印System.out.println()信息,但不能弹出图形界面(原因不知)-->
          <target  name ="run"  depends ="compile">
             <java  classname ="com.test.TestMain">
                 <classpath>
                    <pathelement  path ="${rootBuildClasses}"/>
                 </classpath>
             </java>
          </target>

      
      <!--jar任务-->
      
      <!--将上面classes编译好的class文件,打包为jar包-->
     
     <!--点击打包后的jar文件,即可运行五子棋游戏(前提配置好了jdk环境变量)-->
     <target  name ="jarTarget"  depends ="compile">
           
          <jar  destfile ="${rootBuild}\FiveCheerProject.jar"  basedir ="${rootBuildClasses}">
                 <manifest >
                    <attribute  name ="Main-class"  value ="com.test.TestMain"/>
                 </manifest >
             </jar>
       </target>
     


    </project>

    展开全文
  • 如何将java文件转化成jar 或者exe

    千次阅读 2012-03-31 17:13:46
    一、先将一个java程序或项目打包成jar文件。 1.先在Myeclipses下添加一个插件  fat jar  (1)先把压缩文件解压,将net.sf.fjep.fatjar_0.0.31.jar 放置在你的Myeclipse的安装目录下。   此为我的Myeclipse...

    一、先将一个java程序或项目打包成jar文件。

    1.先在Myeclipses下添加一个插件  fat jar

               (1)先把压缩文件解压,将net.sf.fjep.fatjar_0.0.31.jar 放置在你的Myeclipse的安装目录下。

                  此为我的Myeclipse安装目录路径。如图所示

                  2)关闭你的Myeclipse,重新启动。

    此处为你所要生成jar文件的存放路径

                  3)右键点击你的项目工程名,查看是否有一个 +buile fat jar 选项。若有,表明你已经添加插件成功。

                  4)右键工程名—>Buile Fat Jar—>

    此处为你程序运行的主类

    完成上面两部,点击next

     

     

    点击这里添加你项目中所引入的第三方jar

     

    点击finish,将在你指定位置,生成一个可执行jar文件。查看是否正常。

     

    可能出现的问题:

    1.       所引入的数据库jar包,导入不正确,无法连接数据库。

    2.       项目中可能添加的图片,在Jar文件中不能正常显示。

     

    解决第二个问题。

    如图所示我的项目内容

    1.       src目录下新建一个Folder 目录文件,将你之前的图片放置进去。

    2.       修改代码部分:

    将之前的代码修改为如上所示写法。

     

    整体修改完毕后,重新对项目进行打包操作。并做测试检查

     

     

     

    二、将一个可运行的jar文件做成exe文件。

    1. 先安装exe4j软件。
    2. 运行软件。

    进行软件注册

     

    注册窗体

           用户名,公司名称,随便填写。

           注册完毕,回到主窗体。Next

     

            直接点Next第二步我们选择“JAR in EXE mode” 就是选择我们已经有制作好的jar文件。

     

    3步上面是项目名称,可随便填写,下面一个写出你想要将打包后的exe文件输出的目录我的是桌面\project\”.    NEXT

     

     

    由于我的演示程序是图形的,所以选第一个,如果你的程序是控制台的,则选择第二个,Executable name写你将要生成的.exe文件的名字,Icon File可以选择生成文件的图标。

     

     

     

    5步,先别管上面的,先在下面单击绿色的“+”号。在弹出的窗口中点Archive,然后找到起初已经做好的PetDemo_fat.jar文件,"OK"后返回。

            

     

    在下面的Class Path里就出现jar文件路径后,再在上面Main Class栏内点击找到main所在的类。

          

     

     

     

    6步,你系统的JRE版本,一般是填个1.3,下面填1.6在这里单击advanced options,选择search sequence。选这个就是因为我们要把JDK环境也打包进来,好让程序能跨平台使用。首先要从你系统的JDK下的JRE目录copy到你.exe文件的输出目录下桌面\project\JRE”,然后回到exe4j中在弹出窗口删除列表中的所有项。我的是三项,一个注册表的,一个JAVA环境变量的,一个JDK环境变量的,都不要。然后单击绿“+”,选择directory并选择JRE的根目录,我的是桌面\project\JRE”就是copy后的目录,选完后exe4j弹出窗口中的Directory里会显示“.\JRE”。点OK关闭该窗口,返回exe4j的主窗口,你就可以看到刚加的路径。

     

    Next,进入到下一窗体,点击advanced options,并选择preferred VM,在弹出的窗口中选择client hostspot VM,单击next按钮继续。

     

     

     

    之后一路NEXT。知道完成。

    将会在你的目标生成目录中生成一个exe文件。运行该文件,检查是否有问题。

     

     

    三、将一个exe文件打包成一个安装文件

    1.先安装isetup-5.4.2.exe   文件。

    进行打安装文件过程

    第一步:启动Inno Setup,选择文件 ”---->“新建;进入欢迎界面后,选择下一步

     

    第二步:配置基本信息,如应用程序名称发布者名称应用程序网站信息;选择下一步

     

    第三步:配置应用程序文件夹信息,即程序安装后释放到安装目录的文件夹名称;还可以设置是否允许用户改变应用程序文件夹;选择下一步 ” 

     

    第四步:选择应用程序文件夹,该文件夹内应包括主执行程序、精简的JRE、及其他第三方程序(如在住执行程序中用到三方执行程序);主执行程序选择准备好Exe文件;选择下一步

     

     

     

    第五步:设置应用程序图标,选择下一步

     

    下一步

     

    下一步

     

    下一步,设置生成文件的文件名

     

    一路下一步,知道完成。

    最后生成一个inno文件,指明一个路径就行。

    展开全文
  • java动态编译以及动态生成jar文件

    千次阅读 2019-06-07 01:10:37
    java动态编译以及动态生成jar文件 本文主要为将指定java文件编译并生成jar,供其他程序依赖,直接上代码 动态编译java文件 /** * @author zhangchengping * @PackageName:com.demo.wms.tasks * @ClassName:...
  • javabuilder】将m文件打包成jar文件

    千次阅读 2009-04-26 01:35:00
    简单的说起来就是将写好的.m文件打包成.jar文件,然后在java应用程序中进行调用。这样最大的好处就是避开了java在数值计算中的弱点,也发挥了matlab在数值计算中的强项。毕设的思路就是将常见的股票预测模型用matlab...
  • zip压缩以及解压工具类,本人纯手打。其中包括zip所需要的jar 文件copy到项目中可直接运行,以及工具类添加注释
  • Linux后台运行java -jar

    千次阅读 2017-12-25 16:28:22
    执行这个jar文件,当我关闭这个链接的时候为什么程序停止了呢? 打开XShell连接并运行 java -jar XX.jar  后当前的连接被锁定,也就是说,你的连接的线程当前的状态会影响程序的执行,比如你按了...
  • ENTRYPOINT ["java","-jar","/gitvpro/springcloud-eurekaService.jar"] 3.现在就是执行Dockerfile 生成镜像:(当前目录下执行) docker build -t springcloudeurekaservice . 注意:...
  • 需求:我们把项目中某一个带有main方法的Java类,打包成可执行的Jar文件 要求1:包含Java类依赖的三方Jar包 要求1:指定Java版本 Idea:打包可执行的JAR文件 1.【右键点击项目】-> 【Open Module ...
  • 此包是java上传七牛云所需要的官方jar包,七牛云文档上copy的代码加上此包,直接使用
  • 网上打包说用eclipse安装fat jar插件,但是貌似现在都不能用了,所以我只能按照eclipse自带的方法打包了。但是。。。网上的各自办法都有些问题,并且是不包含第三方jar包的打包方法,结合网上各种方式终于成功了。...
  • java命令行运行jar里的main类一般运行包含manifest的jar包,可以使用java -jar &lt;jar-file-name&gt;.jar如果jar里没有 manifest,则可以使用java -cp foo.jar full.package.name.ClassName当main类依赖多...
  • 从jar包还原出java源码(项目文件)

    千次阅读 2018-04-12 14:53:00
    上周接到个新任务,一个遗留的接口工程需要改造,然而根据前任开发留下的文档看,这个工程没有代码,只有生产环境的jar包供使用。。边吐(咒)槽(骂)边在SVN服务器上四处翻找,想找到这个工程的源码,毕竟没源码怎么跑...
  • Java项目:Eclipse导出终端(命令行)可运行的jar文件 项目右键,Export选择:Runnable JAR filePackage required libraries into generated JAR (项目所引用的jar包会在生成的jar文件中) Copy required libraries ...
  • 在Eclipse下Java程序打包成jar文件

    千次阅读 2009-05-12 15:49:00
    在Eclipse下Java程序打包成jar文件2009年05月08日 星期五 01:46 P.M.第一种方法 利用Eclipse的导出功能Step1:在Eclipse的资源管理器中选中你要打包的项目,右键点击,选择“导出”项,弹出导出对话框,在下面的Java...
  • linux上运行java程序 jar格式

    千次阅读 2016-09-21 17:13:59
    1.打包时设置程序入口,告诉程序跑jar包时哪个程序开始运行; 2.如需调用外部jar,在xx.jar->META-INF->MANIFEST.MF中设置Class-Path;若jar与外部jar放在同一目录,直接写jar名,比如:Class-Pat
  • 1. POM文件添加maven-compiler-plugin以及maven-assembly-plugin,注意在maven-assembly-plugin中要指定mainClass,这样可以避免javajar 时报找不到主类异常。 &lt;project xmlns="h...
  • java 生成jar

    千次阅读 2019-05-08 12:38:17
    1.生成jar包,首先我们写一个类,几个普通的函数 代码: public class Util { public void say(){ System.out.println("hello"); } public int add(int a,int b){ return a + b; } } 2.我们把这几个方法封装成...
  • package生命周期实际是由 maven-jar-plugin去完成; spring-boot-maven-plugin该插件是专门服务于springboot的maven项目,旨在把springboot项目打包成可运行的jar或war。 需要搭配以下几个goal使用,否则和maven...
  • javac、javajar命令

    千次阅读 2019-08-16 17:14:47
    平时运行程序都是由IDE或Maven来完成,应用上线部署都是由其他人来写Shell或bat启动停止脚本,有一天让我把一个后台应用打包jar在Linxu或Window部署运行我竟然蒙B了,好半天才想起来javac和java。 javac命令 javac...
  • Java制作jar包的几种方法

    千次阅读 2014-10-25 14:02:45
    一、操作零散的单个或几个class文件 ... plaincopyprint?...jar cvf ibstool.jar com/cn/ibs/TurnD.class com/cn/ibs/TurnB.class  ...二、把一个文件夹下面的所有class文件打成jar包 [plain] vi
  • nohub java -jar xx.jar >/dev/null 2>&1 &

    千次阅读 2018-01-15 09:58:34
    Linux 运行jar包命令如下: ...java -jar XXX.jar  特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? 方式二 [plain] view pl
  • Ant是一个Apache基金会下的跨平台的构件工具,它可以实现...在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作。 一. 安装与配置下载地址:http://ant.apache.org/,在本文中下载的是1.7
  • 零复制在Java和Webflux 此应用程序包含以下代码示例: 演示如何使用带有和不带有零复制机制的JDK API复制文件。 展示了几种在Spring WebFlux中提供静态文件并测量CPU使用率的方法。 毫不奇怪,提供零拷贝的静态...
  • 原文地址:... Ant是一个Apache基金会下的跨平台的构件工具,它可以实现项目的自动构建和部署等功能。在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作。一. 安装与配置下载
  • java 引入jar包机制

    千次阅读 2013-12-18 17:05:32
    今天研究了下java的引入jar包机制: javase项目中:引入sqljdbc4.jar 直接windows资源管理器文件夹下复制这个jar包到项目中是不能用的,需要采用在项目中引入的方式: 1.右击项目,选择Build Path |------Link ...
  • 从jar中拷贝资源文件

    千次阅读 2016-12-10 15:18:26
    直到这些代码被打成jar包A,然后模块B依赖A时可能就会出现找不到资源文件等各种各样的问题。比如说,我们使用System.load来装载库文件的话,即便我们能得到存放资源文件的路径/D:/project/demo.
  • 在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作。一. 安装与配置 参见本人另一篇博文. 由上可以看出,读者运行Ant的命令时,需要进入到Ant的bin目录,如何才能让系统自动找到Ant呢...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 92,778
精华内容 37,111
关键字:

copy文件java从jar

java 订阅