首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Eclipse Oxygen + Java 9

Eclipse Oxygen + Java 9
EN

Stack Overflow用户
提问于 2017-04-30 21:29:21
回答 4查看 4.2K关注 0票数 2

为了测试一个项目是否为java9做好了准备,我花了几个小时尝试让eclipse编译完整的项目。

下面是我所做的:

顺便说一句,我正在虚拟机中使用XUbuntu ...

我安装了最新的openjdk-9-*包,并删除了所有java8包。

我下载了eclipse oxygen的eclipse安装程序,并安装了eclipse for Java SE的默认版本。

我启动了eclipse,从marketplace安装了Java 9 Support Package,并尝试导入gradle项目。

直到这一点,一切都或多或少地很好。(包有几个问题,eclipse抛出了一些错误消息,但总体而言它是有效的。)

项目已成功导入,但我收到以下错误消息:

代码语言:javascript
复制
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

当它尝试刷新工作区时,我收到以下错误消息:

代码语言:javascript
复制
Errors occurred during the build.
Errors running builder 'Java Builder' on project '<projectName>'.
java.lang.NullPointerException

标准输出充满了FileNotFoundExceptions,如下所示:

代码语言:javascript
复制
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文件:

代码语言:javascript
复制
-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
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-09-09 00:29:11

我也有同样的问题。Eclipse在JDK根目录中找不到jrt-fs.jar。尝试使用Java9JRE运行您的项目。描述here的完整分步解决方案

票数 0
EN

Stack Overflow用户

发布于 2018-02-19 04:50:12

您也可以尝试这样做,以逐步正式地使用Java9完全配置Eclipse。Configure Eclipse for Java 9

票数 1
EN

Stack Overflow用户

发布于 2017-04-30 21:56:31

编辑eclipse.ini并将-vm参数设置为指向/usr/lib/jvm/java-9-openjdk-amd64/bin/java

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43706933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档