java scala 混合编译报错,找不到包。

在尝试将Java代码与Scala代码在同一包中交互时,遇到了编译错误。尽管遵循了标准的项目结构,并参考了Scala Maven插件文档和其他Stack Overflow问题,但问题仍未解决。IDEA项目能成功编译运行,但Maven编译时出错。疑问在于,Java代码是否可能被Scala插件和Java插件分别编译导致问题。
摘要由CSDN通过智能技术生成
原创部分:
       java和scala混合编译报错百度没搜到,google了一下网上成功解决分方案分两种,其中一种是先对scala编译,这种是对应的java引用scala包的情况,第二种是混合编译, 这种是对应的java引用scala包,并且scala包也有引用java包的情况,所以如果你的程序报的是有的包没找到,但是明明程序里面有那个包。我是用先编译scala的方法解决的问题。
      下面我贴上我最终成功的代码,不是从网上找到是从过去的项目中。转载部分有一个解决方案,但是我用没有用。

    最终pom.xml

     

 
<build>
    <plugins>
        <plugin>
            <groupId>org.scala-tools</groupId>
            <artifactId>maven-scala-plugin</artifactId>
            <executions>
                <execution>
                    <id>scala-compile-first</id>
                    <phase>process-resources</phase>
                    <goals>
                        <goal>add-source</goal>
                        <goal>compile</goal>
                    </goals>
                </execution>
                <execution>
                    <id>scala-test-compile</id>
                    <phase>process-test-resources</phase>
                    <goals>
                        <goal>testCompile</goal>
                    </goals>
                </execution>


            </executions>
            <configuration>
                <scalaVersion>${scala.version}</scalaVersion>
                <args>
                    <arg>-target:jvm-1.5</arg>
                </args>
            </configuration>
        </plugin>
        <!-- Use the shade plugin to create a big JAR with all the dependencies -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <configuration>
                <artifactSet>
                    <includes>
                        <include>*:*</include>
                    </includes>
                </artifactSet>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <finalName>${project.artifactId}-${project.version}</finalName>
                        <filters>
                            <filter>
                                <artifact>*:*</artifact>
                                <excludes>
                                    <exclude>META-INF/*.SF</exc
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
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值