如何在Windows中编写Java代码并在Linux中编译和运行

时间:2009-08-17 07:43:06

标签: java

我是一名新的Java开发人员,想知道是否可以使用Eclipse在Windows中编写Java代码,并且代码实际上是在Linux上编译和运行的。我需要为Linux(Ubuntu)环境编写java程序,但我习惯用Windows进行开发。

我正在考虑使用Samba进行文件共享,因此我可以使用Windows来访问驻留在Ubuntu中的源代码。但是当我编译代码时,它实际上使用Windows JVM,而不是Ubuntu JVM,那会有关系吗?此外,当我需要包含驻留在Ubuntu中的外部JAR库时,路径实际上类似于E:\ home \ java \ project \ abc.jar,其中E:drive是来自Samba的映射网络驱动器。所以当我在Ubuntu上运行程序时,将不再有任何D:驱动器。

所以我有点困惑,想知道这是否可行。任何帮助将非常感激

7 个答案:

答案 0 :(得分:7)

您应该将Eclipse用于开发IDE,并将相关的jar添加为相对而非完整目录链接。您可以在Windows上编译并在Linux上运行。没关系。

答案 1 :(得分:7)

因为Java与平台无关,所以编译的位置与运行位置无关。所以你可以在Windows下编译并在Linux上运行没有问题。

您需要在Linux框以及上将库的副本作为Windows框。它们的位置无关紧要,但需要通过环境变量CLASSPATH引用它们。

所以在Windows上,您的CLASSPATH看起来像是:

CLASSPATH=d:\jars\abc.jar;d:\jars\def.jar

在Unix / Linux上它看起来像:

CLASSPATH=/home/user/lib/abc.jar:/home/user/lib/def.jar

(注意冒号和分号之间的变化)。

鉴于上述情况,正在运行

java MyApp.jar

可以在两个平台上运行。全局设置CLASSPATH可能会影响不同的Java实例,因此您可能希望在调用每个程序的shell脚本中进行设置。或者您可以在命令行中指定CLASSPATH,例如

java -cp /home/user/lib/abc.jar:/home/user/lib/def.jar

答案 2 :(得分:2)

编译java时,它不使用JVM。它只是将java源代码编译为字节码,它应该与机器无关。然后,您可以在任何可以运行JVM的计算机上运行已编译的java字节码。所以你不应该从java的角度出现任何问题。

答案 3 :(得分:2)

如果您使用Eclipse 3.5,请注意有一个新的“Export - > Runnable jar”选项,它是FatJar插件的一个子集,允许您作为单个jar导出,并作为传统的可执行jar所有依赖的罐子都放在一个子目录中。

我们已完全切换到后一个模型,因为它完全符合我们的蚂蚁脚本,同时完全没有类加载器技巧和其他讨厌。只是简单的旧“java -jar foo / bar.jar”。

如果适用,强烈推荐。

答案 4 :(得分:1)

如果像你建议的那样,你会将编译后的源代码捆绑在一个JAR中,那么你将在这个地方处理这个问题。

JAR文件包含一个manifest文件,该文件描述了内容,公司等。它还包含类路径,以及您需要的外部jar的路径。对于您的问题,这些路径将是相对的,并且不包括完整的D:\ something。

如果您选择使用Ant生成JAR,则可以使用“jar”任务来定义manifest文件。

示例:

<manifest>
    <attribute name="Specification-Title" value="Blablabla description"/>
    <attribute name="Class-Path" value="${classpath}"/>
</manifest>

在此示例中,“classpath”变量可以是fileset,其中包含所有外部jar。

<path id="classpath">
    <fileset dir="${project.libdir}" includes="*.jar" />
</path>

答案 5 :(得分:1)

我认为使用samba(或任何共享目录)共享源代码是个坏主意。

为文件使用适当的版本控制系统。如果您还没有使用过,那么您真的应该这样做。 (建议:使用插件subclipse的SVN。)

使用eclipse将项目签出到Windows计算机上的本地工作区。

请记住,Linux上的文件名区分大小写。尝试使用相对文件名。

如果你是一个项目中唯一的Windows开发人员,你可能会比它的价值更高, 但如果你是一个不太合适的开发人员,你将在几天内学习Ubuntu。

但是,如果你正在做自己的应用程序,你可以在Windows上编译代码,使用例如FatJar plugin打包它,然后在linux机器上执行它。

答案 6 :(得分:-3)

太麻烦了。为什么不在ubuntu上使用eclipse?