Eclipse打不开,始终报错,还能不能开心的敲代码了???

首先说下造成我这个愚蠢错误的起源:电脑是win10系统,本来是可以正常使用的。某一天,我正在使用python,打开命令提示符,看见开头是中文(现在成了下面这个样了),出于强迫症。我就上网去找处理方法。在知乎某篇回答,我找到注册表,修改了计算机HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileListS-1-5-21-34987087-1338907778-1883452047-1001的中文名。接着重启电脑,结果发现桌面上以前的偏好设置完全不见了,进入命令提示符下,确实变成了英文,但并不是我设置的那个,而是system32.大失所望,于是我又进入注册表把ProfileListPath的中文改回来了(下面还多了个文件)。结果就酿成了现在的错误。

修改的注册表位置:

修改后运行命令界面变成这样了:

好了,当我打开Eclipse时,错误接踵而至。

出现上图错误:An error has occurred.See the log file E:Eclipse Workspace.metadata.log。根据提示我找到Eclipse工作空间的.log文件。

用记事本打开.log文件如下:

!SESSION 2018-11-02 08:30:30.122 -----------------------------------------------

eclipse.buildId=4.4.2.M20150204-1700

java.version=10.0.1

java.vendor=Oracle Corporation

BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=zh_CN

Framework arguments:  -product org.eclipse.epp.package.jee.product

Command-line arguments:  -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.jee.product

!ENTRY org.eclipse.osgi 4 0 2018-11-02 08:30:43.929

!MESSAGE Application error

!STACK 1

java.lang.NoClassDefFoundError: org/w3c/dom/stylesheets/StyleSheet

         at org.eclipse.e4.ui.css.swt.internal.theme.ThemeEngineManager.getCSSSWTEngine(ThemeEngineManager.java:41)

         at org.eclipse.e4.ui.css.swt.internal.theme.ThemeEngineManager.getEngineForDisplay(ThemeEngineManager.java:30)

         at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createThemeEngine(PartRenderingEngine.java:1428)

         at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.initializeStyling(PartRenderingEngine.java:1281)

         at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1036)

         at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)

         at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032)

         at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148)

         at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:636)

         at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)

         at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:579)

         at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)

         at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:135)

         at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)

         at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)

         at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)

         at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)

         at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)

         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

         at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

         at java.base/java.lang.reflect.Method.invoke(Unknown Source)

         at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)

         at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)

         at org.eclipse.equinox.launcher.Main.run(Main.java:1465)

         at org.eclipse.equinox.launcher.Main.main(Main.java:1438)

Caused by: java.lang.ClassNotFoundException: org.w3c.dom.stylesheets.StyleSheet cannot be found by org.eclipse.e4.ui.css.core_0.10.100.v20140424-2042

         at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:432)

         at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:345)

         at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:337)

         at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:160)

         at java.base/java.lang.ClassLoader.loadClass(Unknown Source)

         ... 26 more

接下来,我在Eclipse官网论坛里看到一个留言:

Trimmed javax.xml MANIFEST.MF

With some further discussion on jdk9-dev: the problems when using the app class loader seem to come from the situation that part of the org.w3c class files come from the javax.xml bundle.

So, I did a small experiment: remove all .class files from the javax.xml bundle, but leave the exports information. My assumption here was that that should then "export" the JDK classes.

That didn't quite work: eclipse failed to start because org.w3c.dom.css was unavailable. Adding those classes to the bundle however worked to the effect that Eclipse starts up and seems to be usable.

So, workaround instructions:

$ cd /some/tmp/directory

$ jar xf $ECLIPSE_HOME/plugins/javax.xml_1.3.4.v201005080400.jar

$ rm $ECLIPSE_HOME/plugins/javax.xml_1.3.4.v201005080400.jar

$ jar cvmf whereever/you/downloaded/to/MANIFEST.MF-trimmed $ECLIPSE_HOME/plugins/javax.xml_1.3.4.v201005080400.jar about* license/ org/apache/ plugin.properties org/w3c/dom/css

$ # modify $ECLIPSE_HOME/eclipse.ini and add -Dorg.osgi.framework.bundle.parent=app

而此时的我一脸懵逼。

接下来呀,我换了个1.8.0的Java(较低版本),以前是10.0.1。Eclispe是成功打开了。可惜当弹出提示Java有更新时,我执行会出现如下应用程序错误。

 

点详细信息如下:

 代码复制出来是这个样子:

java.lang.IllegalArgumentException: Invalid characters in hostname

         at java.net.HostPortrange.toLowerCase(Unknown Source)

         at java.net.HostPortrange.<init>(Unknown Source)

         at java.net.URLPermission$Authority.<init>(Unknown Source)

         at java.net.URLPermission.parseURI(Unknown Source)

         at java.net.URLPermission.init(Unknown Source)

         at java.net.URLPermission.<init>(Unknown Source)

         at sun.net.www.protocol.http.HttpURLConnection.URLtoSocketPermission(Unknown Source)

         at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)

         at sun.net.www.protocol.http.HttpURLConnection.getHeaderField(Unknown Source)

         at java.net.URLConnection.getContentType(Unknown Source)

         at com.sun.deploy.net.proxy.AbstractAutoProxyHandler.isSupportedINSFile(Unknown Source)

         at com.sun.deploy.net.proxy.AbstractAutoProxyHandler.retrieveContentOfPACFile(Unknown Source)

         at com.sun.deploy.net.proxy.AbstractAutoProxyHandler.contructLegacyPACScript_16(Unknown Source)

         at com.sun.deploy.net.proxy.AbstractAutoProxyHandler.init(Unknown Source)

         at com.sun.deploy.net.proxy.SunAutoProxyHandler.init(Unknown Source)

         at com.sun.deploy.net.proxy.DynamicProxyManager.reset(Unknown Source)

         at com.sun.deploy.net.proxy.DeployProxySelector.reset(Unknown Source)

         at com.sun.javaws.Main.initializeExecutionEnvironment(Unknown Source)

         at com.sun.javaws.Main.continueInSecureThread(Unknown Source)

         at com.sun.javaws.Main.access$000(Unknown Source)

         at com.sun.javaws.Main$1.run(Unknown Source)

         at java.lang.Thread.run(Unknown Source)

而且当我导入以前的Java工程文件后,运行程序时出现如下错误:

控制台Console错误提示如下:

Exception in thread "main" java.lang.UnsupportedClassVersionError: com/array/Demo1 has been compiled by a more recent version of the Java Runtime (class file version 54.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

不过惊喜的是,我新建一个Java工程文件,运行了一个Demo,发现可以运行了。我把两个工程文件对比了一下,发现两个工程JRE System Library不同:

https://www.cnblogs.com/loober/p/9902089.html

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!