蚀氧 + Java 9
Eclipse Oxygen + Java 9
为了测试一个项目是否为 java 9 做好准备,我在最后几个小时尝试让 eclipse 编译整个项目。
这是我所做的:
顺便说一下,我在虚拟机中使用 XUbuntu...
我安装了最新的 openjdk-9-*
个软件包并删除了所有 java 8 个软件包。
我下载了用于 eclipse oxygen 的 eclipse 安装程序,并为 Java SE 安装了默认版本的 eclipse。
我启动了 eclipse 并从市场安装了 Java 9 Support Package 并尝试导入 gradle 项目。
到目前为止,一切都或多或少地进行得很好。 (包有几个问题,eclipse 抛出了一些错误消息,但总的来说它有效。)
项目已成功导入,但我收到以下错误消息:
The project was not built since its build path is incomplete. Cannot
find the class file for java.lang.Object. Fix the build path then try
building this project
The type java.lang.Object cannot be resolved. It is indirectly
referenced from required .class files
当它尝试刷新工作区时,我收到以下错误消息:
Errors occurred during the build.
Errors running builder 'Java Builder' on project '<projectName>'.
java.lang.NullPointerException
标准输出全是 FileNotFoundExceptions
像这样:
java.io.IOException: /usr/lib/jvm/jrt-fs.jar not exist
at jdk.internal.jrtfs.JrtFileSystemProvider.newFileSystem(java.base@9-internal/JrtFileSystemProvider.java:122)
at jdk.internal.jrtfs.JrtFileSystemProvider.newFileSystem(java.base@9-internal/JrtFileSystemProvider.java:108)
at java.nio.file.FileSystems.newFileSystem(java.base@9-internal/FileSystems.java:342)
at java.nio.file.FileSystems.newFileSystem(java.base@9-internal/FileSystems.java:291)
at org.eclipse.jdt.internal.compiler.util.JrtFileSystem.initialize(JRTUtil.java:204)
at org.eclipse.jdt.internal.compiler.util.JrtFileSystem.<init>(JRTUtil.java:181)
at org.eclipse.jdt.internal.compiler.util.JRTUtil.getJrtSystem(JRTUtil.java:118)
at org.eclipse.jdt.internal.compiler.util.JRTUtil.walkModuleImage(JRTUtil.java:147)
at org.eclipse.jdt.internal.core.JavaProject.loadModulesInJimage(JavaProject.java:727)
at org.eclipse.jdt.internal.core.JavaProject.computePackageFragmentRoots(JavaProject.java:647)
at org.eclipse.jdt.internal.core.JavaProject.computePackageFragmentRoots(JavaProject.java:805)
at org.eclipse.jdt.internal.core.JavaProject.computePackageFragmentRoots(JavaProject.java:769)
at org.eclipse.jdt.internal.core.JavaProject.computePackageFragmentRoots(JavaProject.java:577)
at org.eclipse.jdt.internal.core.ClasspathChange.generateDelta(ClasspathChange.java:401)
at org.eclipse.jdt.internal.core.DeltaProcessor.resourceChanged(DeltaProcessor.java:2096)
at org.eclipse.jdt.internal.core.DeltaProcessingState.resourceChanged(DeltaProcessingState.java:473)
at org.eclipse.core.internal.events.NotificationManager.run(NotificationManager.java:299)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:289)
at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:152)
at org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:374)
at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1469)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2253)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2267)
at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:5624)
at org.eclipse.jdt.internal.ui.actions.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:105)
at org.eclipse.jdt.internal.ui.actions.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:118)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)
这并不奇怪,因为 JDK(和相应的文件)位于 usr/lib/jvm/java-9-openjdk-amd64
。
为了解决这个问题,我创建了一个从 /usr/lib/jvm/jrt-fs.jar
指向 /usr/lib/jvm/java-9-openjdk-amd64/jrt-fs.jar
的符号链接,它消除了这些错误,但是 eclipse 搜索了 /usr/lib/jvm/modules
,它也不存在。 .
忽略以下部分:
我尝试将 --add-modules=java.se.ee
(如 java 9 支持插件所建议的那样)附加到启动参数并添加它,此后对 eclipse.ini 文件的末尾没有任何作用这导致 Eclipse 不再启动。
我的eclipse.ini
文件:
-startup
plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar
--launcher.library
../../../.p2/pool/plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.500.v20161213-1756
-product
org.eclipse.epp.package.java.product
-showsplash
org.eclipse.epp.package.common
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vm
/usr/lib/jvm/java-9-openjdk-amd64/bin/ #Changing this to /usr/<folders>/bin/java changed nothing
-install
/home/robin/eclipse/java-oxygen/eclipse
-vmargs
-Dosgi.requiredJavaVersion=1.8
-XX:+UseG1GC
-XX:+UseStringDeduplication
-Dosgi.requiredJavaVersion=1.8
-Xms256m
-Xmx1024m
-Declipse.p2.max.threads=10
-Doomph.update.url=http://download.eclipse.org/oomph/updates/milestone/latest
-Doomph.redirection.index.redirection=index:/->http://git.eclipse.org/c/oomph/org.eclipse.oomph.git/plain/setups/
#--add-modules=java.se.ee
#Appending this command line argument here causes eclipse to not start - "Could not create JVM"
#This argument can of course also be passed via the command line directly
#But this changes nothing
编辑 eclipse.ini 并将 -vm 参数设置为指向 /usr/lib/jvm/java-9-openjdk-amd64/bin/java
我遇到了同样的问题。 Eclipse 在 JDK 根目录中找不到 jrt-fs.jar。用 Java 9 JRE 代替尝试 运行 你的项目。 here
描述的完整分步解决方案
你也可以试试这个用Java 9 step by official来完全配置Eclipse。 Configure Eclipse for Java 9
我在 Linux Mint with Oxygen 中打开 jdk-9 时遇到了同样的问题。
我注意到我的发行版的回购协议提供的 jdk 版本(版本:9-internal)在启动器选项方面有很大不同。
例如,选项 --add-modules=ALL-SYSTEM 无法识别,并且如前所述,会阻止 eclipse 启动。
在 eclipse.ini 中将该选项更改为 -addmodsALL-SYSTEM,使氧气发射正常( 代表新行)。
关于其他问题,我尝试创建指向 jrt-fs.jar 的符号链接和使氧气抱怨的模块目录;一切似乎都很好,但印象并没有持续。
返回类型解析(对象、字符串等)中的问题。我无法纠正这一点。我对 jdk 库和模块路径的设置很好,但没有模块 loaded/displayed,这是我尚未解决的问题。
希望以上信息对您有所帮助。
为了测试一个项目是否为 java 9 做好准备,我在最后几个小时尝试让 eclipse 编译整个项目。
这是我所做的:
顺便说一下,我在虚拟机中使用 XUbuntu...
我安装了最新的 openjdk-9-*
个软件包并删除了所有 java 8 个软件包。
我下载了用于 eclipse oxygen 的 eclipse 安装程序,并为 Java SE 安装了默认版本的 eclipse。
我启动了 eclipse 并从市场安装了 Java 9 Support Package 并尝试导入 gradle 项目。
到目前为止,一切都或多或少地进行得很好。 (包有几个问题,eclipse 抛出了一些错误消息,但总的来说它有效。)
项目已成功导入,但我收到以下错误消息:
The project was not built since its build path is incomplete. Cannot
find the class file for java.lang.Object. Fix the build path then try
building this project
The type java.lang.Object cannot be resolved. It is indirectly
referenced from required .class files
当它尝试刷新工作区时,我收到以下错误消息:
Errors occurred during the build.
Errors running builder 'Java Builder' on project '<projectName>'.
java.lang.NullPointerException
标准输出全是 FileNotFoundExceptions
像这样:
java.io.IOException: /usr/lib/jvm/jrt-fs.jar not exist
at jdk.internal.jrtfs.JrtFileSystemProvider.newFileSystem(java.base@9-internal/JrtFileSystemProvider.java:122)
at jdk.internal.jrtfs.JrtFileSystemProvider.newFileSystem(java.base@9-internal/JrtFileSystemProvider.java:108)
at java.nio.file.FileSystems.newFileSystem(java.base@9-internal/FileSystems.java:342)
at java.nio.file.FileSystems.newFileSystem(java.base@9-internal/FileSystems.java:291)
at org.eclipse.jdt.internal.compiler.util.JrtFileSystem.initialize(JRTUtil.java:204)
at org.eclipse.jdt.internal.compiler.util.JrtFileSystem.<init>(JRTUtil.java:181)
at org.eclipse.jdt.internal.compiler.util.JRTUtil.getJrtSystem(JRTUtil.java:118)
at org.eclipse.jdt.internal.compiler.util.JRTUtil.walkModuleImage(JRTUtil.java:147)
at org.eclipse.jdt.internal.core.JavaProject.loadModulesInJimage(JavaProject.java:727)
at org.eclipse.jdt.internal.core.JavaProject.computePackageFragmentRoots(JavaProject.java:647)
at org.eclipse.jdt.internal.core.JavaProject.computePackageFragmentRoots(JavaProject.java:805)
at org.eclipse.jdt.internal.core.JavaProject.computePackageFragmentRoots(JavaProject.java:769)
at org.eclipse.jdt.internal.core.JavaProject.computePackageFragmentRoots(JavaProject.java:577)
at org.eclipse.jdt.internal.core.ClasspathChange.generateDelta(ClasspathChange.java:401)
at org.eclipse.jdt.internal.core.DeltaProcessor.resourceChanged(DeltaProcessor.java:2096)
at org.eclipse.jdt.internal.core.DeltaProcessingState.resourceChanged(DeltaProcessingState.java:473)
at org.eclipse.core.internal.events.NotificationManager.run(NotificationManager.java:299)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:289)
at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:152)
at org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:374)
at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1469)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2253)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2267)
at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:5624)
at org.eclipse.jdt.internal.ui.actions.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:105)
at org.eclipse.jdt.internal.ui.actions.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:118)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)
这并不奇怪,因为 JDK(和相应的文件)位于 usr/lib/jvm/java-9-openjdk-amd64
。
为了解决这个问题,我创建了一个从 /usr/lib/jvm/jrt-fs.jar
指向 /usr/lib/jvm/java-9-openjdk-amd64/jrt-fs.jar
的符号链接,它消除了这些错误,但是 eclipse 搜索了 /usr/lib/jvm/modules
,它也不存在。 .
忽略以下部分:
我尝试将 --add-modules=java.se.ee
(如 java 9 支持插件所建议的那样)附加到启动参数并添加它,此后对 eclipse.ini 文件的末尾没有任何作用这导致 Eclipse 不再启动。
我的eclipse.ini
文件:
-startup
plugins/org.eclipse.equinox.launcher_1.4.0.v20161219-1356.jar
--launcher.library
../../../.p2/pool/plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.500.v20161213-1756
-product
org.eclipse.epp.package.java.product
-showsplash
org.eclipse.epp.package.common
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vm
/usr/lib/jvm/java-9-openjdk-amd64/bin/ #Changing this to /usr/<folders>/bin/java changed nothing
-install
/home/robin/eclipse/java-oxygen/eclipse
-vmargs
-Dosgi.requiredJavaVersion=1.8
-XX:+UseG1GC
-XX:+UseStringDeduplication
-Dosgi.requiredJavaVersion=1.8
-Xms256m
-Xmx1024m
-Declipse.p2.max.threads=10
-Doomph.update.url=http://download.eclipse.org/oomph/updates/milestone/latest
-Doomph.redirection.index.redirection=index:/->http://git.eclipse.org/c/oomph/org.eclipse.oomph.git/plain/setups/
#--add-modules=java.se.ee
#Appending this command line argument here causes eclipse to not start - "Could not create JVM"
#This argument can of course also be passed via the command line directly
#But this changes nothing
编辑 eclipse.ini 并将 -vm 参数设置为指向 /usr/lib/jvm/java-9-openjdk-amd64/bin/java
我遇到了同样的问题。 Eclipse 在 JDK 根目录中找不到 jrt-fs.jar。用 Java 9 JRE 代替尝试 运行 你的项目。 here
描述的完整分步解决方案你也可以试试这个用Java 9 step by official来完全配置Eclipse。 Configure Eclipse for Java 9
我在 Linux Mint with Oxygen 中打开 jdk-9 时遇到了同样的问题。
我注意到我的发行版的回购协议提供的 jdk 版本(版本:9-internal)在启动器选项方面有很大不同。
例如,选项 --add-modules=ALL-SYSTEM 无法识别,并且如前所述,会阻止 eclipse 启动。
在 eclipse.ini 中将该选项更改为 -addmods
关于其他问题,我尝试创建指向 jrt-fs.jar 的符号链接和使氧气抱怨的模块目录;一切似乎都很好,但印象并没有持续。
返回类型解析(对象、字符串等)中的问题。我无法纠正这一点。我对 jdk 库和模块路径的设置很好,但没有模块 loaded/displayed,这是我尚未解决的问题。
希望以上信息对您有所帮助。