好吧,今天我将Java 10添加到我的Windows 10机器上,它打破了eclipse Neon。我的Neon副本不适用于Java 10,因此我明确要求它在eclipse.ini中使用Java 8。我究竟做错了什么?我很难过。无论我的-vm设置如何,Neon都会继续尝试使用Java 10进行启动。
的eclipse.ini
-startup
plugins/org.eclipse.equinox.launcher_1.3.201.v20161025-1711.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.401.v20161122-1740
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vm
C:\Program Files\Java\jdk1.8.0_121\bin\javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.8
-XX:+UseG1GC
-XX:+UseStringDeduplication
-Dosgi.requiredJavaVersion=1.8
-Xms256m
-Xmx1024m
在Neon尝试使用Java 10时失败启动后的日志输出:
!会话2018-05-11 17:25:40.179 ----------------------------------------------- eclipse.buildId = 4.6.3.M20170301-0400 java.version = 10.0.1 java.vendor = Oracle Corporation BootLoader常量:OS = win32, ARCH = x86_64,WS = win32,NL = en_US命令行参数:-os win32 -ws win32 -arch x86_64
!ENTRY org.eclipse.osgi 4 0 2018-05-11 17:25:42.747!MESSAGE 应用程序错误!STACK 1 org.eclipse.e4.core.di.InjectionException: java.lang.NoClassDefFoundError:javax / annotation / PostConstruct at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:386)
如果我在我的Java8目录路径上更改JAVA_HOME和java bin,Neon将运行。所以它似乎正在读取ini文件中的env vars,这似乎是我对eclipse的vm狩猎程序的理解。
答案 0 :(得分:2)
将行def arrays1(row, column):
return [[None]*column for i in range(row)]
def arrays2(row, column):
return [[None]*column]*row
x = arrays1(2, 2)
y = arrays2(2, 2)
x[0][0] = 1
y[0][0] = 1
print(x) # [[1, None], [None, None]]
print(y) # [[1, None], [1, None]]
向上移动两行,高于--launcher.appendVmargs
。
请参阅Eclipse Wiki: Eclipse.ini - Specifying the JVM:
-vm选项必须在 之后 发生其他特定于Eclipse的选项 (例如
-vm
,-product
等),但--launcher.*
选项之前, 因为-vmargs
之后的所有内容都直接传递给JVM。