Java System.getenv返回null(已尝试所有其他解决方案) 这是macOS High Sierra 10.13.2 我将导出数据库\u URL=mysql://username:password@localhost:3306/mydb在~/.bash\u profile中,重新启动机器,并确保在终端运行echo$DATABASE\u URL时获得该值。 2.我使用sudo./eclipse 3.还使用了launchd.conf,但显然最新版本的MacOS不支持这种功能

Java System.getenv返回null(已尝试所有其他解决方案) 这是macOS High Sierra 10.13.2 我将导出数据库\u URL=mysql://username:password@localhost:3306/mydb在~/.bash\u profile中,重新启动机器,并确保在终端运行echo$DATABASE\u URL时获得该值。 2.我使用sudo./eclipse 3.还使用了launchd.conf,但显然最新版本的MacOS不支持这种功能,java,macos,environment-variables,Java,Macos,Environment Variables,我错过了什么 更新1 当我运行/eclipse时,控制台上出现以下错误: java.lang.RuntimeException: Error initializing storage. at org.eclipse.osgi.internal.framework.EquinoxContainer.<init>(EquinoxContainer.java:77) at org.eclipse.osgi.launch.Equinox.<init>(Equino

我错过了什么

更新1 当我运行
/eclipse
时,控制台上出现以下错误:

java.lang.RuntimeException: Error initializing storage.
    at org.eclipse.osgi.internal.framework.EquinoxContainer.<init>(EquinoxContainer.java:77)
    at org.eclipse.osgi.launch.Equinox.<init>(Equinox.java:31)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.startup(EclipseStarter.java:295)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:231)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    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)
Caused by: java.io.FileNotFoundException: /Users/myuser/eclipse/configuration/org.eclipse.osgi/.manager/.fileTableLock (Permission denied)
    at java.io.RandomAccessFile.open0(Native Method)
    at java.io.RandomAccessFile.open(RandomAccessFile.java:316)
    at java.io.RandomAccessFile.<init>(RandomAccessFile.java:243)
    at org.eclipse.osgi.internal.location.Locker_JavaNio.lock(Locker_JavaNio.java:36)
    at org.eclipse.osgi.storagemanager.StorageManager.lock(StorageManager.java:388)
    at org.eclipse.osgi.storagemanager.StorageManager.open(StorageManager.java:701)
    at org.eclipse.osgi.storage.Storage.getChildStorageManager(Storage.java:1749)
    at org.eclipse.osgi.storage.Storage.getInfoInputStream(Storage.java:1766)
    at org.eclipse.osgi.storage.Storage.<init>(Storage.java:126)
    at org.eclipse.osgi.storage.Storage.createStorage(Storage.java:85)
    at org.eclipse.osgi.internal.framework.EquinoxContainer.<init>(EquinoxContainer.java:75)
    ... 10 more
java.lang.RuntimeException:初始化存储时出错。
位于org.eclipse.osgi.internal.framework.EquinoxContainer.(EquinoxContainer.java:77)
在org.eclipse.osgi.launch.Equinox上(Equinox.java:31)
位于org.eclipse.core.runtime.adapter.EclipseStarter.startup(EclipseStarter.java:295)
位于org.eclipse.core.runtime.adapter.EclipseStarter.run(EclipseStarter.java:231)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648)
位于org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
位于org.eclipse.equinox.launcher.Main.run(Main.java:1465)
由以下原因引起:java.io.FileNotFoundException:/Users/myuser/eclipse/configuration/org.eclipse.osgi/.manager/.fileTableLock(权限被拒绝)
位于java.io.RandomAccessFile.open0(本机方法)
位于java.io.RandomAccessFile.open(RandomAccessFile.java:316)
位于java.io.RandomAccessFile。(RandomAccessFile.java:243)
位于org.eclipse.osgi.internal.location.Locker\u JavaNio.lock(Locker\u JavaNio.java:36)
位于org.eclipse.osgi.storagemanager.storagemanager.lock(storagemanager.java:388)
位于org.eclipse.osgi.storagemanager.storagemanager.open(storagemanager.java:701)
位于org.eclipse.osgi.storage.storage.getChildStorageManager(storage.java:1749)
位于org.eclipse.osgi.storage.storage.getInfoInputStream(storage.java:1766)
位于org.eclipse.osgi.storage.storage(storage.java:126)
位于org.eclipse.osgi.storage.storage.createStorage(storage.java:85)
位于org.eclipse.osgi.internal.framework.EquinoxContainer.(EquinoxContainer.java:75)
... 10多

我有时在IntelliJ中也看到同样的问题,即缺少导出。你能试着在eclipse终端上导出数据库的URL并试一试吗?如果有用的话,我们可以深入了解细节。试过了,但还是没有结果。我还做了
System.getenv()
以获得所有环境变量的列表。显然,我没有在
中设置环境变量。bash\u profile
尝试将其放入
中。bashrc
我认为Eclipse不会将其环境变量传递给其进程。您应该在中明确指定这些。Ubuntu和Mac有什么不同吗?因为它在我的Ubuntu上运行良好。