【问题标题】:Compiling and Running java in Unix ( coming from Windows )在Unix中编译和运行java(来自Windows)
【发布时间】:2010-09-24 05:45:08
【问题描述】:

好的,这适用于 Windows。我的 Java 应用程序运行正常

javac -classpath .;ojdbc14.jar -g foo.java
java  -classpath .;ojdbc14.jar  foo

然而,当我在 Unix 上做同样的事情时,我得到了这个错误: ojdbc14.jar:未找到

我做错了什么?我知道“;”告诉我的 shell ojdbc14.jar 是一个新命令,但我不知道如何解决这个问题。

【问题讨论】:

    标签: java bash unix sh


    【解决方案1】:

    使用冒号 (":") 代替分号 (";")。

    参见Setting the class path (Solaris and Linux)Setting the class path (Windows)

    【讨论】:

      【解决方案2】:
      javac -classpath '.;ojdbc14.jar' -g foo.java
      java  -classpath '.;ojdbc14.jar'  foo
      

      【讨论】:

      • 好的,你说得对,单引号会阻止shell解释“;”作为命令分隔符,但 Unix java 不会理解“;”在类路径中。
      • 如果 java 可以识别非 Windows 平台上类路径中的分号,则既不保证也不记录。
      • +1。 -1 是没有根据的。 InsDel 的解决方案确实有效,并且并非天生就无济于事。它可能不是最佳解决方案,但它是一个解决方案。
      • 是的,但我认为詹姆斯的观点是正确的——它可能并不总是有效。
      【解决方案3】:

      最终的解决方案是:

      javac -classpath .:ojdbc14.jar -g foo.java
      java  -classpath .:ojdbc14.jar  foo
      

      注意:使用 '.;ojdbc14.jar' 删除了我收到的初始错误消息,但导致以下错误:

      Exception in thread "main" java.lang.NoClassDefFoundError: foo
      

      【讨论】:

        【解决方案4】:

        使用 ant,或者甚至更好地将 ant 与像 Hudson 这样的持续构建环境和像 SVN 这样的 SCM 一起使用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-05-21
          • 2014-10-12
          相关资源
          最近更新 更多