精华内容
下载资源
问答
  • 最后,我自己是一名从事了多年开发的JAVA老程序员,今年年初...我们需要对编写的程序进行打包,这个时候,我们可以借助一些项目构建工具,如maven, sbt, ant等,这里我使用的是maven打包成可执行有主类的jar包(ja...

    最后,我自己是一名从事了多年开发的JAVA老程序员,今年年初我花了一个月整理了一份最适合2019年学习的java学习干货,可以送给每一位喜欢java的小伙伴,想要获取的可以关注我的头条号并在后台私信我:java,即可免费获取

    很多时候,我们需要对编写的程序进行打包,这个时候,我们可以借助一些项目构建工具,如maven, sbt, ant等,这里我使用的是maven。

    打包成可执行有主类的jar包(jar包中无依赖)

    以下是配置打包成可执行,带主类的jar包:

    4b32fcf2f8a2986c23f68ffcf6bc4650.png

    But, 虽然现在把程序打包成了jar文件,也可以运行,但是,这个jar包是没有包含依赖的,因此,如果这个程序有其他依赖,那么在运行这个程序的时候,需要指定类目录,并且要把所有的依赖都放到类目录下去,手动添加依赖到类目录下,简直就是恶梦。。。

    我曾经就这么干过,它少一个依赖,我就手动加一个到类目录,少一个,加一个,少一个,加一个,当我加了大概有10几个之后,而且还看不到尽头。。。简直要疯的节奏,然后想起之前用sbt打包,也是可以把依赖添加到jar包,心情顿时好转,赶紧google,于是找到google到了maven的官网…。顺便说一下,虽然我们google的时候,会搜索到很多结果,但很多时候,我们最好选择合适的结果进行阅读,我的一般顺序是:官方优先,StackExchange。。。

    打包成带依赖的jar包

    配置

    不加main类而带依赖的jar包

    编辑pom.xml文件,内容如下:

    25306d13b6cde0a2394edeac4f141020.png

    加main类也带依赖的jar包

    编辑pom.xml文件,内容如下:

    738870f5feabf62dcf801f08ba597c25.png

    值得注意的是,不要像以下那样修改pom.xml文件,那样虽然不会报错,但生成的jar包中的MANIFEST.MF中没有主类,这样的jar包无法直接运行。

    c9b7a687ff1a5e74602fc9d92dd7182b.png

    打包

    使用以下命令打包:

    mvn package

    然而,当在运行操作hdfs的jar包时,我出现了以下问题:

    5038065cd85b269e1ce19207a864df18.png

    好在有位仁兄[2]也遇到了这个问题,从而使得问题解决。解决方法如下:

    bfe3c49e2b9fe830367ad0a91c6432c5.png

    除了他之种方法之外,我也自己摸索出了一种方法,经过实践,也是可行的,我的方法如下:

    找到打包好的jar包,然后使用归档管理器打开这个jar包,即“open with archive manager”,找到META-INFO/services目录,再找到这个目录下的org.apache.Hadoop.fs.FileSystem文件,编辑这个文件,在文件末尾加上一行:

    org.apache.hadoop.hdfs.DistributedFileSystem

    但是,这么修改jar的方法,不太合适,因为每生成一次,需要修改一次,所以,建议暂时使用前面那种解决方法。


    作者: XGogo

    来源:博客园

    2fc0b390a0a06d5f5cfcf31f549c1859.png
    展开全文
  • 使用Maven对JAVA程序打包-带主类带依赖 http://blog.csdn.net/strongyoung88/article/details/54097830

    使用Maven对JAVA程序打包-带主类、带依赖

    http://blog.csdn.net/strongyoung88/article/details/54097830

    展开全文
  • maven package 会打不上依赖包从而报错的问题 背景:使用windows写sparkstreaming和kafka整合的代码,提交到伪分布式系统ubuntu上运行,在windows上使用maven下载了依赖库,但是打包的时候不带依赖,在集群上运行会...

    折腾了一晚上加一上午,总算解决了。

    解决:

    1.

    21/04/13 20:55:27 INFO scheduler.EventLoggingListener: Logging events to hdfs://master:8020/directory/local-1618372526737
    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/kafka/common/serialization/StringDeserializer

    2.

    使用maven 不加插件的打包 maven package 会打不上依赖包从而报错的问题
     

    背景:使用windows写sparkstreaming和kafka整合的代码,提交到伪分布式系统ubuntu上运行,在windows上使用maven下载了依赖库,但是打包的时候不带依赖,在集群上运行会报错。

    前前后后尝试了idea、sbt、maven打包,最终还是用maven打包成功了。

    核心:配置POM打包插件

    使用插件: scala-maven-plugin : 这个插件是编译scala代码的,之前一直没有添加这个插件,导致编译后的包里面找不到主类,也就是没有你要运行的那个object(class)文件

    整体POM.XML

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>org.example</groupId>
        <artifactId>maven_kafka_test</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
        </properties>
    
      <!-- 以下是我sparkstreaming用到的两个依赖 -->
        <dependencies>
    
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-streaming_2.11</artifactId>
                <version>2.4.7</version>
            </dependency>
    
            <dependency>
                <groupId>org.apache.spark</groupId>
                <artifactId>spark-streaming-kafka-0-10_2.11</artifactId>
                <version>2.4.7</version>
            </dependency>
        </dependencies>
    
    
      
        <build>
            <plugins>
                <plugin>
                <!-- !!必须有这个插件,才可以编译scala代码找到主类,版本我是网上搞来的 -->
                    <groupId>net.alchim31.maven</groupId>
                    <artifactId>scala-maven-plugin</artifactId>
                    <version>3.2.2</version>
                    <executions>
                        <execution>
                            <id>compile-scala</id>
                            <phase>compile</phase>
                            <goals>
                                <goal>add-source</goal>
                                <goal>compile</goal>
                            </goals>
                        </execution>
                        <execution>
                            <id>test-compile-scala</id>
                            <phase>test-compile</phase>
                            <goals>
                                <goal>add-source</goal>
                                <goal>testCompile</goal>
                            </goals>
                        </execution>
                    </executions>
                    <!-- 填写你的scala version -->
                    <configuration>
                        <scalaVersion>2.11.12</scalaVersion>
                    </configuration>
                </plugin>
    
                <!-- maven编译插件,版本我是网上搞来的 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.2</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
    
    
                <!-- assembly模式编译,带依赖-->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-assembly-plugin</artifactId>
                    <version>3.0.0</version>
    
                    <configuration>
                        <appendAssemblyId>false</appendAssemblyId>
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                        <archive>
                            <manifest>
                            <!-- 你的mainclass入口,我就是test.scala 在scala文件夹下, 目录就是scr/main/scala -->
                                <mainClass>test</mainClass>
                            </manifest>
                        </archive>
                    </configuration>
                    <executions>
                        <execution>
                            <id>make-assembly</id>
                            <phase>package</phase>
                            <goals>
                                <goal>single</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
    
        </build>
    
    
    
    
    </project>

     

    有什么问题欢迎留言,第一次用scala maven打包的确遇到了很多问题,大家群策群力一起解决!

    展开全文
  • 打包成可执行有主类的jar包(jar包中无依赖)以下是配置打包成可执行,带主类的jar包:But, 虽然现在把程序打包成了jar文件,也可以运行,但是,这个jar包是没有包含依赖的,因此,如果这个程序有其他依赖,那么在运行...

    58683325ee4e00f84171bc58178b4841.png

    很多时候,我们需要对编写的程序进行打包,这个时候,我们可以借助一些项目构建工具,如maven, sbt, ant等,这里我使用的是maven。

    打包成可执行有主类的jar包(jar包中无依赖)

    以下是配置打包成可执行,带主类的jar包:

    089d44336853fc89eb2fa91bc68b64c9.png

    But, 虽然现在把程序打包成了jar文件,也可以运行,但是,这个jar包是没有包含依赖的,因此,如果这个程序有其他依赖,那么在运行这个程序的时候,需要指定类目录,并且要把所有的依赖都放到类目录下去,手动添加依赖到类目录下,简直就是恶梦。。。

    我曾经就这么干过,它少一个依赖,我就手动加一个到类目录,少一个,加一个,少一个,加一个,当我加了大概有10几个之后,而且还看不到尽头。。。简直要疯的节奏,然后想起之前用sbt打包,也是可以把依赖添加到jar包,心情顿时好转,赶紧google,于是找到google到了maven的官网…。顺便说一下,虽然我们google的时候,会搜索到很多结果,但很多时候,我们最好选择合适的结果进行阅读,我的一般顺序是:官方优先,StackExchange。。。

    打包成带依赖的jar包

    配置

    不加main类而带依赖的jar包

    编辑pom.xml文件,内容如下:

    f166619fc0883f22be22dae6637ebec0.png

    加main类也带依赖的jar包

    编辑pom.xml文件,内容如下:

    3c94f747f213d940318f7c1b864de137.png

    值得注意的是,不要像以下那样修改pom.xml文件,那样虽然不会报错,但生成的jar包中的MANIFEST.MF中没有主类,这样的jar包无法直接运行。

    a40da94134f750b01db9eaa88e1cfa2c.png

    打包

    使用以下命令打包:

    mvn package

    然而,当在运行操作hdfs的jar包时,我出现了以下问题:

    3c38099d7b476e7fa67d8a2f74851862.png

    好在有位仁兄[2]也遇到了这个问题,从而使得问题解决。解决方法如下:

    b6c96de6dac4bb4a8a337e22ed13e958.png

    除了他之种方法之外,我也自己摸索出了一种方法,经过实践,也是可行的,我的方法如下:
    找到打包好的jar包,然后使用归档管理器打开这个jar包,即“open with archive manager”,找到META-INFO/services目录,再找到这个目录下的org.apache.Hadoop.fs.FileSystem文件,编辑这个文件,在文件末尾加上一行:

    org.apache.hadoop.hdfs.DistributedFileSystem

    但是,这么修改jar的方法,不太合适,因为每生成一次,需要修改一次,所以,建议暂时使用前面那种解决方法。

    作者:XGogo

    来源:博客园

    展开全文
  • 打包成可执行有主类的jar包(jar包中无依赖)以下是配置打包成可执行,带主类的jar包:打开搜狗搜索APP,查看更多精彩资讯But, 虽然现在把程序打包成了jar文件,也可以运行,但是,这个jar包是没有包含依赖的,因此,...
  • 很多时候,我们需要对编写的程序进行...打包成可执行有主类的jar包(jar包中无依赖)以下是配置打包成可执行,带主类的jar包:...org.apache.maven.pluginsmaven-jar-plugin...truefully.qualified.MainClass ...But, ...
  • 很多时候,我们需要对编写的程序进行打包,这个时候,...打包成可执行有主类的jar包(jar包中无依赖) 以下是配置打包成可执行,带主类的jar包: <project> ... <build> <plugins> <p...
  • maven 打包,都不带依赖第三jar:maven-assembly-plugin    不加main类而带依赖的jar包 &lt;project&gt; [...] &lt;build&gt; [...] &lt;plugins&gt; &lt;plugin&gt; &...
  • 打包成可执行有主类的jar包(jar包中无依赖)以下是配置打包成可执行,带主类的jar包:But, 虽然现在把程序打包成了jar文件,也可以运行,但是,这个jar包是没有包含依赖的,因此,如果这个程序有其他依赖,那么在运行...
  • IntelliJ IDEA中SpringBoot项目打包简易教程前言springboot项目打...可执行程序中一般会在某个主类中包含程序入口方法,就是main方法,以前的界面的java swing项目最终打包发布的jar都具有可执行行,一般双击jar文件
  • 这里我们通过apache commons cli来完成目标功能,废话不多说直接上代码所需的maven依赖commons-clicommons-cli1.4这里我们贴出主类代码options opts = new options();opts.addoption("h", false,"help");option ...
  • 这里我们通过Apache Commons CLI来完成目标功能,废话不多说直接上代码所需的maven依赖commons-clicommons-cli1.4这里我们贴出主类代码Options opts = new Options();opts.addOption("h", false,"help");Option ...
  • IDEA+Maven 打jar包

    2021-04-04 15:18:22
    Maven:3.3.9 打jar包: IDEA 自带的打包工具使用 打无依赖jar包 如果工程目录中有以下文件夹 删掉 点击工程上方【File】菜单选择【Project Structure】 点击【+】 选择【JAR】,【From modules with ...
  • 这里我们通过Apache Commons CLI来完成目标功能,废话不多说直接上代码 所需的maven依赖 <groupId>commons-cli <artifactId>commons-cli <version>1.4 这里我们贴出主类代码Op

空空如也

空空如也

1 2
收藏数 28
精华内容 11
关键字:

maven主类带依赖打包