为了测试一个项目是否为java9做好了准备,我花了几个小时尝试让eclipse编译完整的项目。
下面是我所做的:
顺便说一句,我正在虚拟机中使用XUbuntu ...
我安装了最新的openjdk-9-*
包,并删除了所有java8包。
我下载了eclipse oxygen的eclipse安装程序,并安装了eclipse for Java SE的默认版本。
我启动了eclipse,从marketplace安装了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$1.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$1.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
(根据java9支持插件的建议)附加到启动参数中,并将其添加到启动参数中,但这对导致eclipse不再启动的eclipse.ini文件的末尾没有任何影响。
我的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
发布于 2017-09-09 00:29:11
我也有同样的问题。Eclipse在JDK根目录中找不到jrt-fs.jar。尝试使用Java9JRE运行您的项目。描述here的完整分步解决方案
发布于 2018-02-19 04:50:12
您也可以尝试这样做,以逐步正式地使用Java9完全配置Eclipse。Configure Eclipse for Java 9
发布于 2017-04-30 21:56:31
编辑eclipse.ini并将-vm参数设置为指向/usr/lib/jvm/java-9-openjdk-amd64/bin/java
https://stackoverflow.com/questions/43706933
复制相似问题