我有一个使用sbt在我的虚拟机上构建的项目。在构建过程中,它在我的虚拟机的〜/ root /目录中安装了几个库。例如,.classpath文件的一部分如下所示:
<classpathentry kind="lib" path="/root/.ivy2/cache/org.apache.avro/avro/jars/avro-1.7.6.jar"/>
<classpathentry kind="lib" path="/root/.ivy2/cache/org.codehaus.jackson/jackson-core-asl/jars/jackson-core-asl-1.9.13.jar"/>
<classpathentry kind="lib" path="/root/.ivy2/cache/org.codehaus.jackson/jackson-mapper-asl/jars/jackson-mapper-asl-1.9.13.jar"/>
<classpathentry kind="lib" path="/root/.ivy2/cache/org.apache.commons/commons-compress/jars/commons-compress-1.4.1.jar"/>
我在主机上的Mac OS上运行Eclipse,当我导入Eclipse项目(通过samba安装)时,我最终会遇到一堆导入错误,因为类路径仅在我的客户机上有效。 / p>
从主机运行Eclipse应用程序时,在虚拟环境中开发Java / Scala项目的典型/标准方法是什么?
我最好在主机上进行所有开发吗?
答案 0 :(得分:0)
这不是上述问题的典型或标准解决方案。但是,当使用sbt-eclipse插件生成项目文件时,它解决了我的具体问题。
事实证明,您可以传入sbt-eclipse插件的相对路径,并将传播到.classpath文件。
./sbt eclipse -ivy ./ivy
这样,当您将项目导入Eclipse时,它将使用基于根项目路径的所有相对路径。它似乎工作到目前为止。
<classpathentry kind="lib" path="./ivy/cache/org.apache.avro/avro-compiler/bundles/avro-compiler-1.7.6.jar"/>
<classpathentry kind="lib" path="./ivy/cache/org.apache.avro/avro/bundles/avro-1.7.6.jar"/>
<classpathentry kind="lib" path="./ivy/cache/org.codehaus.jackson/jackson-core-asl/jars/jackson-core-asl-1.9.13.jar"/>
<classpathentry kind="lib" path="./ivy/cache/org.codehaus.jackson/jackson-mapper-asl/jars/jackson-mapper-asl-1.9.13.jar"/>
<classpathentry kind="lib" path="./ivy/cache/org.apache.commons/commons-compress/jars/commons-compress-1.4.1.jar"/>
请注意,虽然这解决了导入错误,但应用程序仍在主机而不是虚拟机上运行。