java动态加载包含scala语言的jar包需要注意的事项

最近写了一个spring boot工程,大概的需求就是要动态加载一个包含scala语言的jar包,调用其中的方法。

中间遇到了非常多的问题,网上的相关信息也不多,就一步步摸索着搞了出来,现在把一些经验记录如下:

1,调用jar包和被调用jar包都要加上下面三个依赖:

  <dependency>

   <groupId>org.scala-lang</groupId>

   <artifactId>scala-library</artifactId>

   <version>${scala.version}</version>

  </dependency>

  <dependency>

   <groupId>org.scala-lang</groupId>

   <artifactId>scala-reflect</artifactId>

   <version>${scala.version}</version>

  </dependency>

  <dependency>

   <groupId>org.scala-lang</groupId>

   <artifactId>scala-compiler</artifactId>

   <version>${scala.version}</version>

  </dependency>

 

2,调用jar包和被调用jar包的scala版本需一致,且尽量高一些

3,打jar包的时候一定要把依赖打上,以下是我用来打包被调用jar包的插件

            <plugin>

                <artifactId>maven-assembly-plugin</artifactId>

                <configuration>

                    <descriptorRefs>

                        <descriptorRef>jar-with-dependencies</descriptorRef>

                    </descriptorRefs>

                    <archive>

                        <manifest>

                            <mainClass>XXXX</mainClass>

                        </manifest>

                    </archive>

                </configuration>

                <executions>

                    <execution>

                        <id>make-assembly</id>

                        <phase>package</phase>

                        <goals>

                            <goal>single</goal>

                        </goals>

                    </execution>

                </executions>

            </plugin>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Scala可以很方便地使用Java代码,因此将ScalaJava代码混合打是很常见的需求。这里介绍一种使用sbt进行混合打的方法。 1. 创建sbt项目 首先需要创建一个sbt项目,并将Java代码和Scala代码分别放到src/main/java和src/main/scala目录下。 2. 配置build.sbt文件 在build.sbt文件添加以下内容: ``` name := "your-project-name" version := "1.0" scalaVersion := "2.12.8" javacOptions ++= Seq("-source", "1.8", "-target", "1.8") unmanagedSourceDirectories in Compile += baseDirectory.value / "src" / "main" / "java" unmanagedResourceDirectories in Compile += baseDirectory.value / "src" / "main" / "resources" libraryDependencies ++= Seq( "org.scala-lang" % "scala-library" % scalaVersion.value, "com.typesafe.akka" %% "akka-actor" % "2.5.23" ) ``` 其,unmanagedSourceDirectories指定了Java源代码的位置,unmanagedResourceDirectories指定了资源文件的位置,libraryDependencies指定了项目需要依赖库。 3. 打 在sbt控制台运行以下命令即可打: ``` sbt package ``` 打后的jar文件位于target/scala-2.12目录下。 4. 运行 可以使用以下命令运行打后的jar文件: ``` java -cp your-project.jar com.your.package.MainClass ``` 其,your-project.jar是打后的jar文件名,com.your.package.MainClass是程序入口类的全限定名。 注意:在运行时需要保证依赖库已经被正确地加载。如果依赖库没有正确加载,可以使用以下命令运行: ``` java -cp your-project.jar:lib/* com.your.package.MainClass ``` 其,lib/*表示将lib目录下的所有jar文件都加入到classpath
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

热血大婶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值