maven找不到java.lang.object的类文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven找不到java.lang.object的类文件相关的知识,希望对你有一定的参考价值。
您好,您遇到的问题很正常,因为java.lang.Object是Java核心类库的一部分,它是所有Java类的父类,Maven不会把它放在任何位置,因为它是Java虚拟机的一部分,它是在编译时自动添加到您的classpath中的。因此,您可以在您的类路径中找到它,但是您不能在Maven中找到它,因为它不是Maven的一部分。 参考技术A java.lang.Object作为Java是里语言基础类,它已经自动引入Maven项目中,无需手动引入。如果仍然找不到java.lang.Object的类文件,可能是Maven项目依赖包未正确引入,建议检查并重建Maven项目。 参考技术B Maven找不到java.lang.Object的类文件是因为它不存在。Java.lang.Object是由编译器自动插入的隐式类,而不是一个实际的类文件。 参考技术C Maven依赖机制可能会导致这种问题,你应该检查一下Maven依赖中是不是存在多个版本的相同包,如果存在,请尝试使用exclude属性解决依赖冲突,或者将Java版本更新到最新版本无法初始化编译器:找不到编译器镜像中的对象 java.lang.Object
【中文标题】无法初始化编译器:找不到编译器镜像中的对象 java.lang.Object【英文标题】:Failed to initialize compiler: object java.lang.Object in compiler mirror not found 【发布时间】:2016-11-30 20:52:22 【问题描述】:在 Ubuntu 16.04 上,我安装了scala
:
$ls ~/Binary/scala-2.11.8
bin doc lib man
$grep -A 2 SCALA ~/.bashrc
SCALA=~/Binary/scala-2.11.8
SBT=~/Binary/sbt
export PATH=$PATH:$SCALA/bin:$SBT/bin
安装openjdk8
后,scala
在打开 REPL 时失败:
$javac -version
javac 1.8.0_91
$
$scala
Welcome to Scala 2.11.8 (OpenJDK 64-Bit Server VM, Java 9-internal).
Type in expressions for evaluation. Or try :help.
scala>
Failed to initialize compiler: object java.lang.Object in compiler mirror not found.
** Note that as of 2.8 scala does not assume use of the java classpath.
** For the old behavior pass -usejavacp to scala, or if using a Settings
** object programmatically, settings.usejavacp.value = true.
Failed to initialize compiler: object java.lang.Object in compiler mirror not found.
** Note that as of 2.8 scala does not assume use of the java classpath.
** For the old behavior pass -usejavacp to scala, or if using a Settings
** object programmatically, settings.usejavacp.value = true.
我该如何解决?
【问题讨论】:
你机器的JAVA_HOME值是多少? 未设置。但是,我通过sudo update-alternatives --config javac
修复它以使用 openjdk-8 而不是 /usr/lib/jvm/java-9-openjdk-amd64/bin/java
。
设置 JAVA_HOME 是否消除了错误?
在我的机器上设置 JAVA_HOME 删除了错误
我遇到了同样的问题,将 java 版本更改为 8 就成功了。
【参考方案1】:
使用 Java 8 版本的 OpenJDK 为我解决了这个问题。
sudo update-alternatives --config java
sudo update-alternatives --config javac
【讨论】:
使用 brew 在 osx 上安装特定的 java 版本:lonecpluspluscoder.com/2017/10/08/… 非常有帮助的答案! 这是一个 linux 问题,但如果您在 Mac 上遇到此问题,请按照这些说明在您的系统中安装 Java8 (***.com/questions/24342886/…),并相应地设置您的新 JAVA_HOME(请参阅@Dbz在下面回答)。 我使用的是 Java 10,降级到 OpenJDK 版本 8 确实有效!但是,我还必须将 JAVA_HOME 环境变量更新到正确的文件夹才能工作,以防万一有人也需要这样做。 在 Ubuntu 上使用 Java 8 版本对我有用,无需任何进一步的更改。很好的答案【参考方案2】:Java 8 已被弃用,因此降级到 is 绝不能成为可接受的解决方案。
正确的解决方案是将您的 SBT 升级到 0.13.17 或更高版本。
【讨论】:
其他 8 个答案中唯一正确的答案,零赞!【参考方案3】:这个问题似乎与 Java 9 相关,并在 Java 8 中得到解决。
如果您有 Java 8 和 Java 9,并且希望同时保留这两个版本,则可以将环境变量 JAVA_HOME
设置为 Java 8 路径。
例如:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home
您需要将 jdk1.8.0_161.jdk
替换为您拥有的任何版本的 JDK。
您可以通过以下方式找到该版本:
ls /Library/Java/JavaVirtualMachines/
设置环境变量后,您可以打开一个新终端并运行java -version
以查看版本设置是否正确。
编辑:
值得注意的是,我有一台 Mac,尽管这是一个 linux 问题。
【讨论】:
【参考方案4】:安装 java 版本“1.8.0_144”为我解决了这个问题。我之前安装过 jdk 1.9。
【讨论】:
【参考方案5】:如果您使用的是与 JDK 8 以上不兼容的旧版 Scala,请update to a newer version that's compatible with JDK 11。 JDK 11 是当前的 LTS。
次要版本:
对于 2.11.x,这意味着2.11.12
或 later
对于 2.12.x,这意味着 2.12.10
或 later
对于 2.13.x,这意味着 2.13.1
或 later
正如提到的其他答案,请确保您还使用与 JDK >8 兼容的构建工具(例如 sbt 大于 0.13.17
)。
【讨论】:
【参考方案6】:安装 Java 8 解决了这个问题。
我下载了 java 8 并将其提取到以下位置:/usr/lib/jvm/jdk1.8.0_172
完成此操作后,将 JAVA_HOME 路径更新为相同:/usr/lib/jvm/jdk1.8.0_172
这将解决问题。
【讨论】:
【参考方案7】:使用此 java 版本“1.8.0_144”
卸载java和apache-spark
安装java,安装apache-spark
【讨论】:
【参考方案8】:我遇到了同样的问题。卸载 Java 9
sudo rm -fr /Library/Java/JavaVirtualMachines/jdk-9.jdk/
sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
sudo rm -fr /Library/PreferencePanes/JavaControlPanel.prefPane
参考:https://gist.github.com/schnell18/bcb9833f725be22f6acd01f94b486392
安装 Java 8。
现在一切似乎都很好。
顺便说一句:这是为 mac 准备的。可能对你有用。
【讨论】:
【参考方案9】:我在同一位置有我的 jdk 的 zip。取下拉链对我有用。
【讨论】:
以上是关于maven找不到java.lang.object的类文件的主要内容,如果未能解决你的问题,请参考以下文章
Spring Arangodb 存储边缘但因 MappingException 失败:找不到类型类 java.lang.Object 的 PersistentEntity
无法初始化编译器:找不到编译器镜像中的对象 java.lang.Object
如何修复类 java.lang.Object 的现有方法“clone”和“finalize”的 proguard 警告“找不到引用的方法”