精华内容
下载资源
问答
  • idea打包jar包

    2020-08-30 21:53:59
    idea打包jar包

    一.

    在这里插入图片描述

    二.

    在这里插入图片描述

    三.

    在这里插入图片描述

    四.

    在这里插入图片描述

    五.

    在这里插入图片描述

    六.

    在out文件夹中查看jar包
    在这里插入图片描述

    展开全文
  • Idea打包jar包

    2019-04-13 20:56:34
    利用idea本身软件打包方式打包
  • IDEA打包jar包详尽流程

    万次阅读 多人点赞 2019-04-08 23:11:59
    打包流程 1. 打开菜单栏File-Project Structure 2. 点击Artifacts 3. 点击 "+" - JAR - From module with depenencies 4. 后弹出如下界面,自此开始,各种问题就来了 首先Module中,我SocketDemo的...

    打包流程

    1. 打开菜单栏File-Project Structure

         

    2. 点击Artifacts

        

    3. 点击 "+" - JAR - From module with depenencies

        

    4. 后弹出如下界面,自此开始,各种问题就来了

       

    • 首先Module中,我SocketDemo的Module含有SocketDemo、SocketDemo_main、SocketDemo_test三个,一定要选择main

            

    • Main Class选择自己要打包的类(一个Module一个包下可能有多个类需要打包),我做了一个测试类Test

            

    • JAR files from libraries 第一个选项只生成主类(main)的jar包,第二个选项不太清楚,看别的博客说是生成的jar包包含Module中引用的所有jar包,但选择第二个很大可能在以后的运行中出现问题,我反正是选的第一个

            

    • 接下来是 MF文件的存放目录,重点。不能使用默认目录,必须自定义目录,不然会运行错误,也不能使用src/main/resources这个目录(这个目录是我建project时自带的,也可能没有),自定义目录也不能在src/main下建名为resources的文件。于是我新建了resource

           

    • 最终是这样的,点击OK

           

    • 此时应该也必须有META-INF此文件,不然会运行错误。若JAR files from libraries选择src/main/resources目录,是没有META-INF文件的。Output directory是jar包的保存目录

           

    • 点击OK

    5. 点击Build-Artifacts

        

    6. 点击Build

        

    7. 此时Output directory便出现了jar包

       

    8. 打开CMD窗口,运行jar包。一定要cd到jar包所在目录(Output directory),一定要使用java - jar jar包名称

        

    结束。欢迎一起交流~~~

    展开全文
  • IDEA打包jar包的多种方式

    万次阅读 2017-12-13 22:20:26
    本篇文章总结出用IDEA打包jar包的多种方式。项目打包Jar包可以参考如下形式:用IDEA自带的打包形式;用Maven插件maven-shade-plugin打包;用Maven插件maven-assembly-plugin打包。下面跟着小编一起来看下吧 ...
    本篇文章总结出用IDEA打包jar包的多种方式。项目打包Jar包可以参考如下形式:用IDEA自带的打包形式;用Maven插件maven-shade-plugin打包;用Maven插件maven-assembly-plugin打包。下面跟着小编一起来看下吧

    这里总结出用IDEA打包jar包的多种方式,以后的项目打包Jar包可以参考如下形式:

    1. 用IDEA自带的打包形式
    2. 用Maven插件maven-shade-plugin打包
    3. 用Maven插件maven-assembly-plugin打包

    用IDEA自带的打包方式:

    打开IDEA的file -> Project Structure,进入项目配置页面。如下图:

    点击Artifacts,进入Artifacts配置页面,点击 + ,选择如下图的选项。

    进入Create JAR from Modules页面,按照如下图配置。

    • 第一步选择Main函数执行的类。
    • 第二步选择如图的选项,目的是对第三方Jar包打包时做额外的配置,如果不做额外的配置可不选这个选项(但不保证打包成功)
    • 第三步需要在src/main目录下,新建一个resources目录,将MANIFEST.MF文件保存在这里面,因为如果用默认缺省值的话,在IDEA12版本下会有bug。

    点击OK之后,出现如下图界面,右键点击<output root>,点击Create Directory,创建一个libs,将所有的第三方JAR放进libs目录下。

    成功之后,如下图所示:

    放入之后,点击我们要打成的jar的名字,这里面是kafka-cps.jar,选择classpath进行配置。

    编辑的结果如下:

    这里将所有的jar都写在libs/里面。点击OK,回到配置页面。

    同时还注意在配置页面,勾选build on make

    最后点击配置页面的OK,完成配置。回到IDEA,点击Build->Build Artifacts,选择build

    就会生成我们需要的jar包。其位置在项目目录的out目录下/out/artifacts/kafka_cps_jar

    下面放一个正确配置的清单文件内容

    用maven-shade-plugin打包

    上面的打包过程实在是过于的繁琐,而且也没有利用到maven管理项目的特色。为此,我们这里利用maven中的maven-shade-plugin插件。在pom.xml中,我们加入如下的信息来加入插件。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <plugin>   <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>1.4</version>
        <configuration>
    <createDependencyReducedPom>true</createDependencyReducedPom>
        </configuration>
        <executions>
         <execution>
          <phase>package</phase>
          <goals>
           <goal>shade</goal>
          </goals>
          <configuration>
           <transformers>
            <transformer  implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
    <mainClass>Main.Main</mainClass>
            </transformer>
           </transformers>
          </configuration>
         </execution>
        </executions>
       </plugin>

    这里面配置了一个`configuration`标签内容,在此标签下面 有一个transformer标签,用来配置Main函数的入口(<mainClass>Main.Main</mainClass>),当然此标签内容很复杂,不是上面写的那么简单,上面之所以如此简单,是因为在所有类中(包括第三方Jar)只有一个Main方法。如果第三方jar中有Main方法,就要进行额外的配置,上面这么配置,不一定能执行成功。

    在加入这段代码到pom.xml之后,我们就可以用maven的命令去打包了。其指令如下:

    1
    2
    3
    mvn clean compile //清除之前target编译文件并重新编译
    mvn clean package //对项目进行打包(因为配置过插件,所以jar包是可执行的)
    mvn clean install //安装项目,然后就可以使用了

    然后通过java -jar cps-1.0-SNAPSHOT.jar运行。

    如果使用IDEA的话,可以通过自带的maven管理工具代替执行上面的命令。如下图所示,依次点击蓝色的部分。

    用maven-assembly-plugin打包

    上面的方法,我们还需要点击很多命令去打包。这次利用一个新的插件,可以打包更简单。同样,在pom.xml中加入如下代码。上文的maven-shade-plugin插件代码可以删除。最好不要写2个插件代码。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <plugin>
       <artifactId>maven-assembly-plugin</artifactId>
       <version>2.4</version>
       <configuration>
        <descriptorRefs>
         <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <archive>
         <manifest>
    <mainClass>Main.Main</mainClass>
         </manifest>
        </archive>
       </configuration>
       <executions>
        <execution>
         <id>make-assembly</id>
         <phase>package</phase>
         <goals>
          <goal>single</goal>
         </goals>
        </execution>
       </executions>
      </plugin>

    这里同样配置了一个manifest标签来配置Main函数的入口。然后通过如下指令来实现打包。

    mvn assembly:assembly

    如果使用IDEA的话,可以通过自带的maven管理工具代替执行上面的命令。如下图所示,点击蓝色的部分。

    然后通过执行java -jar cps-1.0-SNAPSHOT-jar-with-dependencies.jar运行。



    现在基本上都是采用maven来进行开发管理,我有一个需求是需要把通过maven管理的java工程打成可执行的jar包,这样也就是说必需把工程依赖的jar包也一起打包。而使用maven默认的package命令构建的jar包中只包括了工程自身的class文件,并没有包括依赖的jar包。我们可以通过配置插件来对工程进行打包,pom具体配置如下:

    maven-assembly-plugin

    Xml代码  收藏代码
    1. <plugin>  
    2.     <artifactId>maven-assembly-plugin</artifactId>  
    3.     <configuration>  
    4.         <appendAssemblyId>false</appendAssemblyId>  
    5.         <descriptorRefs>  
    6.             <descriptorRef>jar-with-dependencies</descriptorRef>  
    7.         </descriptorRefs>  
    8.         <archive>  
    9.             <manifest>  
    10.                 <mainClass>com.chenzhou.examples.Main</mainClass>  
    11.             </manifest>  
    12.         </archive>  
    13.     </configuration>  
    14.     <executions>  
    15.         <execution>  
    16.             <id>make-assembly</id>  
    17.             <phase>package</phase>  
    18.             <goals>  
    19.                 <goal>assembly</goal>  
    20.             </goals>  
    21.         </execution>  
    22.     </executions>  
    23. </plugin>  

     

    其中<mainClass></mainClass>的值表示此工程的入口类,也就是包含main方法的类,在我的例子中就是com.chenzhou.examples.Main。配置完pom后可以通过执行mvn assembly:assembly命令来启动插件进行构建。构建成功后会生成jar包,这样我们就可以在命令行中通过java -jar XXX.jar来运行jar件了。 

     

    不过使用此插件会有一些问题:我在工程中依赖了spring框架的jar包,我打包成功后使用命令来调用jar包时报错如下(内网环境):

     

    Shell代码  收藏代码
    1. org.xml.sax.SAXParseException: schema_reference.4: Failed to read schema document 'http://www.springframework.org/schema/beans/spring-beans-3.0.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not <xsd:schema>.  

    关于此问题报错的原因,我在网上找到一篇文章对此有比较详细的解释:http://blog.csdn.net/bluishglc/article/details/7596118 简单来说就是spring在启动时会加载xsd文件,它首先会到本地查找xsd文件(一般都会包含在spring的jar包中),如果找不到则会到xml头部定义的url指定路径下中去寻找xsd,如果找不到则会报错。

    附:在spring jar包下的META-INF文件夹中都会包含一个spring.schemas文件,其中就包含了对xsd文件的路径定义,具体如下图所示:

    spring-aop.jar包下META-INF文件夹下的内容

    图:spring-aop.jar包下META-INF文件夹下的内容

    spring.schemas文件内容

    图:spring.schemas文件内容

    由于我的工程是在内网,所以通过url路径去寻找肯定是找不到的,但是比较奇怪的是既然spring的jar包中都会包含,那为什么还是找不到呢?

      原来这是assembly插件的一个bug,具体情况参见:http://jira.codehaus.org/browse/MASSEMBLY-360

    该bug产生的原因如下:工程一般依赖了很多的jar包,而被依赖的jar又会依赖其他的jar包,这样,当工程中依赖到不同的版本的spring时,在使用assembly进行打包时,只能将某一个版本jar包下的spring.schemas文件放入最终打出的jar包里,这就有可能遗漏了一些版本的xsd的本地映射,所以会报错。

    所以一般推荐使用另外的一个插件来进行打包,插件名称为:maven-shade-plugin,shade插件打包时在对spring.schemas文件处理上,它能够将所有jar里的spring.schemas文件进行合并,在最终生成的单一jar包里,spring.schemas包含了所有出现过的版本的集合,要使用shade插件,必须在pom进行如下配置:

     

    Xml代码  收藏代码
    1. <plugin>  
    2.     <groupId>org.apache.maven.plugins</groupId>  
    3.     <artifactId>maven-shade-plugin</artifactId>  
    4.     <version>1.4</version>  
    5.     <executions>  
    6.         <execution>  
    7.             <phase>package</phase>  
    8.             <goals>  
    9.                 <goal>shade</goal>  
    10.             </goals>  
    11.             <configuration>  
    12.                 <transformers>  
    13.                     <transformer  
    14.                         implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">  
    15.                         <resource>META-INF/spring.handlers</resource>  
    16.                     </transformer>  
    17.                     <transformer  
    18.                         implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">  
    19.                         <mainClass>com.chenzhou.examples.Main</mainClass>  
    20.                     </transformer>  
    21.                     <transformer  
    22.                         implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">  
    23.                         <resource>META-INF/spring.schemas</resource>  
    24.                     </transformer>  
    25.                 </transformers>  
    26.             </configuration>  
    27.         </execution>  
    28.     </executions>  
    29. </plugin>  

    上面配置文件中有一段定义:

     

    Xml代码  收藏代码
    1. <transformer  
    2.     implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">  
    3.     <resource>META-INF/spring.schemas</resource>  
    4. </transformer>  

      上面这段配置意思是把spring.handlers和spring.schemas文件以append方式加入到构建的jar包中,这样就不会存在出现xsd找不到的情况。

    配置完pom后,调用mvn clean install命令进行构建,构建成功后打开工程target目录,发现生成了2个jar包,一个为:original-XXX-0.0.1-SNAPSHOT.jar,另一个为:XXX-0.0.1-SNAPSHOT.jar,其中original...jar里只包含了工程自己的class文件,而另外的一个jar包则包含了工程本身以及所有依赖的jar包的class文件。我们只需要使用第二个jar包就可以了。

    参考资料:

    http://hi.baidu.com/yuzhi2217/item/2c1714363f25c4f62684f442

    http://blog.csdn.net/bluishglc/article/details/7596118

    http://jira.codehaus.org/browse/MASSEMBLY-360


    展开全文
  • IDEA 打包 jar 记录

    2020-12-02 15:42:56
    打包 jar 流程2. 可能遇到的问题2.1 MANIFEST.MF 文件已经存在报错2.2 已经删除的 jar 配置再次打开时依然存在 前言 最近在了解 Java Agent 探针技术,在做 demo 的时候需要把代码打包jar ,通过 java -...

    前言

    最近在了解 Java Agent 探针技术,在做 demo 的时候需要把代码打包成 jar 包,然后通过 java -javaagent:xxx -jar xxx 命令启动才能测试代码是否正确修改了字节码,因此有了这篇文章

    1. 打包 jar 包流程

    1. 首先直接点击图示位置(也可以点击File --> Project Structure),打开项目结构配置
      在这里插入图片描述

    2. 在打开的界面选择 Artifacts点击加号+ --> 选择 JAR–> 选择 From modules with depenencies 新建 jar 包配置
      在这里插入图片描述

    3. 新建 jar 包配置界面如下所示,其中从上往下红框标记的都是需要注意的

      1. 首先选中需要打包的 Module,也就是对应模块
      2. 选中该模块中的主类,点击文件夹图标会自动检测这个模块中存在的主类,选择即可
      3. 选择选中模块依赖的第三方 jar 包在新的 jar 包中的存在形式,主要有两种选择:
        1. extract to the target JAR把模块依赖的 jar 包解压,将其内部包含的 class 文件直接合并到目标 jar 文件中。这种方式打包出来的 jar 文件通过 IDEA 查看,会发现其内部不仅包含我们指定的模块的源文件夹,也包含了依赖的 jar 包中的文件夹
        2. copy to the output directory and link via manifest: 将模块依赖的 jar 包直接打包进目标 jar 包内,第三方 jar 包依然独立存在。这种方式需要指定第三方 jar 包在目标 jar 包中的 Class Path,否则程序启动时无法正确处理依赖
      4. 选择一个创建 MANIFEST.MF 文件的文件夹,如果该文件夹下已经有 MANIFEST.MF 文件了则会在点击 OK 完成配置时报错,原因及解决方式见下节 2.1 MANIFEST.MF 文件已经存在报错

      在这里插入图片描述

    4. 基本配置完毕则进入下一步,界面如下所示

      1. 左侧选中新建的 jar 配置,右侧红框处都是可以修改的部分,如 Name(jar 配置名称)Output directory(打包出的 jar 包的存在文件夹)
      2. Available Elements(可用元素) 用于选择需要打包进 jar 包中的文件,双击该选项下文件夹中的文件即可将其添加到 jar 包中
      3. 最后 Class Path 用于配置目标 jar 包中依赖的 jar 包,如果在上一个步骤中选择了 copy to the output directory and link via manifest 则一定要配置,配置值为依赖 jar 包在目标 jar 包中的相对路径,否则省略

      在这里插入图片描述

    5. 配置完成,就会在上文步骤3第四步指定的文件夹中创建一个MANIFEST.MF 文件,打开该文件可以进行相关配置,比如笔者的配置如下,可以根据自身模块情况做修改
      在这里插入图片描述

    6. 最后一步,点击Build–>Build Artifacts,在弹窗中选中目标 jar 包配置,然后在其右侧弹框中选择 Build 或者 ReBuild点击即可进行编译打包。打包完成后,可以在步骤4配置的Output directory(打包出的 jar 包的存在文件夹) 中找到目标 jar。笔者以 extract to the target JAR 方式处理第三方 jar 包,可以看到其依赖的 jar 包中的文件都合并到了目标 jar 包中

    7. 启动目标 jar 包,只需要在终端中执行 java -jar 命令即可。以笔者为例,启动命令为

      java  -jar /Users/xxx/workspace/demo/out/artifacts/src/src.jar
      

    2. 可能遇到的问题

    本节记录在打包过程中遇到的问题,给自己做个笔记,也希望读者可以避免踩坑

    2.1 MANIFEST.MF 文件已经存在报错

    这个错误会在新建 jar 包配置时发生,具体如下截图。其实错误信息已经写的很明白,就是在这个目录下 MANIFEST.MF 文件已经存在。一开始遇到这个错误可能会摸不着头脑,因为一般在 eclipse 下打包 jar 都需要我们手动创建 MANIFEST.MF 文件,而 IDEA 其实会自动帮助使用者创建 MANIFEST.MF 文件,当指定文件夹下已经有 MANIFEST.MF 文件则会报出这个错误。一般解决方法如下:

    1. 指定另一个文件夹作为 MANIFEST.MF 文件存在目录
    2. 将原文件夹下的 MANIFEST.MF 文件删除

    自动创建的 MANIFEST.MF 文件不符合要求的时候,只要用户继续修改这个文件即可

    在这里插入图片描述

    2.2 已经删除的 jar 包配置再次打开时依然存在

    这个问题的表现为已经点击了 - 按钮,删除了一个命名为 src的 jar 配置,但是再次打开该界面的时候这个配置又出现了

    在这里插入图片描述

    这个问题产生原因很简单,IDEA 会将创建过的 jar 配置缓存在 .idea 文件夹中,只要找到该文件夹,删除对应的 xml 文件即可,如下图所示

    在这里插入图片描述

    展开全文
  • 期望效果通过mvn package进行打包的时候生成jar包启动脚本 直接对生成的jar包启动引入maven插件org.apache.maven.pluginsmaven-assembly-plugin3.1.0src/main/assembly/assembly.xml...
  • IDEA打包jar包

    2018-12-25 10:22:00
    1、点击idea左边的Maven 2、点开要打包的项目下的-->Lifecycle-->双击package ...3、jar包会默认保存在项目下的target文件夹下 转载于:https://www.cnblogs.com/zqyw/p/10172465.html...
  • 参考地址:https://blog.csdn.net/dufufd/article/details/71126571 idea中将java项目中的单个类打包jar包 参考地址:https://blog.csdn.net/weixin_42950079/article/details/85218124 ...
  • IDEA打包jar包详尽流程 https://blog.csdn.net/weixin_42089175/article/details/89113271 https://blog.csdn.net/T1DMzks/article/details/75099029 jar包中的类如何读取包内和包外的配置文件...
  • 【工具】IDEA打包jar包

    千次阅读 2020-03-19 16:43:31
    记录下使用IDEA打包Jar包的过程 打开工程里的Project Structure 1、选择Artifacts->2、添加Add弹出标签卡 ->3、JAR->4、From modules with dependencies 5、弹出选项卡 6、选择主函数入口使用的...
  • 首先把添加到准备当中 然后选择Artifacts 点击右上角的+ 选择jar 中的from …with… 1.main class选择自己的启动 2.还有改成copy… 3.文件夹选择建议到src下否则可能会出错 添加完了如图所示 点击apply 和OK...
  • IDEA打包JAR包

    2019-12-14 15:50:07
    1.File->Project Structure 2. 3. 或者 4.点击OK 5. 6. 7.等待编译完成 8.最终存储位置
  • 利用MAVEN打包可运行jar包,包括依赖的第三方包转载自:http://bglmmz.iteye.com/blog/2058914背景:另一篇文章说了如何利用IDEA打包,现在来说说如何利用MAVEN打包目标:应用本身打成一个jar包,依赖的第三方包放...
  • 自用,idea打包jar包

    2019-05-19 17:12:02
    到导出目录中 java –jar liqun-search.jar 其余jar包是关联jar包或者全部jar包
  • 利用Idea打包jar包

    2018-03-10 23:01:00
    过程: 1.菜单栏选择File ...若打包后出现如ClassNotFind的异常,需要注意第4步里Extracted是否包含了需要的jar文件。 如: Exception in thread "main" java.lang.NoClassDefFoundError: org/apache...
  • IDEA打包jar包并运行

    2018-10-12 15:58:28
    主要看图: 打包: 项目右键 -&gt; 会生成METE-INF和out两个文件夹: ...命令窗口切换到项目的jar包目录下: 查看可见生成的jar包: 运行:java -jar mall.jar 运行成功: ...
  • idea打包jar

    2019-10-08 14:46:25
    idea打包jar的时候报does not exist or is not a directory错误 原因是工程路径里面有中文:工程代码。打包的时候路径里面不要出现中文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,012
精华内容 1,604
关键字:

idea打包jar包