我能够从命令提示符运行一个示例hadoop程序,并尝试从Eclipse运行相同的程序,以便我可以调试它并更好地理解它。
对于命令行程序,在.bashrc
中设置了一些环境变量,并且在hadoop程序中将其读取为System.getenv().get("HADOOP_MAPRED_HOME")
。但是,当我运行带有System.getenv().get("HADOOP_MAPRED_HOME")
的java程序时,从Eclipse中我得到了null。
我尝试将-DHADOOP_MAPRED_HOME=test
传递给Eclipse中运行时配置中的VM参数,但在独立程序中仍然为null。如何在Eclipse中显示环境变量?当我在Eclipse中迭代System.getenv()
时,我看到很多变量,如DISPLAY
,USER
,HOME
等。他们在哪里设置?我使用的是Ubuntu 11.04。
答案 0 :(得分:93)
您还可以定义仅在Eclipse中可见的环境变量。
转到Run - >运行配置...并选择选项卡“环境”。
在那里,您可以添加几个特定于您的应用程序的环境变量。
答案 1 :(得分:28)
.bashrc文件用于设置交互式登录shell使用的变量。如果您希望Eclipse中提供这些环境变量,则需要将它们放在/ etc / environment中。
答案 2 :(得分:24)
我为此创建了一个eclipse插件,因为我遇到了同样的问题。 随意下载并为此做出贡献。
它仍处于早期开发阶段,但它已经为我做好了工作。
答案 3 :(得分:7)
您可以通过向VM发送-Dhadoop.home.dir来设置Hadoop主目录。要将此参数发送到您在eclipse中执行的所有应用程序,您可以在Window-> Preferences-> Java-> Installed JREs->中设置它们。 (选择您的JRE安装) - >编辑.. - > (在“默认VM参数:”文本框中设置值)。您可以将$ {HADOOP_HOME}替换为Hadoop安装的路径。
答案 4 :(得分:4)
你也可以在shell中启动eclipse。
在调用eclipse之前导出enronment。
E.g。
#!/bin/bash
export MY_VAR="ADCA"
export PATH="/home/lala/bin;$PATH"
$ECLIPSE_HOME/eclipse -data $YOUR_WORK_SPACE_PATH
然后,您可以在eclipse上拥有多个具有自己的客户环境的实例,包括工作区。
答案 5 :(得分:1)
我正在尝试实现这一目标,但是是在MAVEN构建的背景下进行的。在我的pom.xml
配置中,我引用了一个环境变量作为本地JAR路径的一部分:
<dependency>
<groupId>the group id</groupId>
<artifactId>the artifact id</artifactId>
<version>the version</version>
<scope>system</scope>
<systemPath>${env.MY_ENV_VARIABLE}/the_local_jar_archive.jar</systemPath>
</dependency>
要编译我的项目,我必须定义环境变量作为maven构建的运行配置的一部分,如Max的回答所解释。我能够启动Maven编译,并且项目可以正常编译。
但是,因为此环境变量涉及一些依赖关系,所以Eclipse的默认“问题”视图(通常会在其中显示编译错误/警告)仍会沿Could not find artifact
的行显示错误。和systemPath should be an absolute path but is ${env.MY_ENV_VARIABLE}/the_local_jar_archive.jar
。
我如何修复
进入Window -> Preferences -> General -> Worksapce -> Linked Resources
并定义一个新的路径变量。
最后,就我而言,我只需要右键单击pom.xml
文件,选择Maven -> Update Project
,错误将从“问题”视图中消失。
答案 6 :(得分:0)
对于想要在Eclipse项目中覆盖OS的环境变量的人,请参阅@MAX答案。
当你在同一台机器上发布项目结束日食项目时,这很有用。
发布项目可以使用OS环境变量进行测试,eclipse项目可以覆盖它以用于开发用途。
答案 7 :(得分:0)
我能够设置环境。变量(通过在shell(ksh)脚本中获取源命令)来确定变量。 然后我从外部工具调用了.ksh脚本