【问题标题】:Including jars in classpath on commandline (javac or apt)在命令行的类路径中包含 jars(javac 或 apt)
【发布时间】:2011-01-06 23:10:51
【问题描述】:

试图运行这个程序。我认为要设置我需要运行 apt 的所有 Web 服务。 (虽然使用 javac 我有同样的问题)。我认为我得到的是编译错误。 (显示在底部)。

我认为我需要做的是在我的类路径中包含这个 jar:jsr181-api.jar (source)。有没有一种简单的临时方法来做到这一点(在solaris上)?我不想将它添加到我的 bash_rc 文件中(它永远存在)。我也知道有一些方法可以使用清单文本文件来做到这一点,但这似乎很复杂,所以我还没有研究它。我可以这样做吗:

javac HelloImp <listOfJars>

ant HelloImp <listOfJars>

代码:

package server;

import javax.jws.WebService;

@WebService
public class HelloImpl {

  /**
   * @param name
   * @return Say hello to the person.
   */
   public String sayHello(String name) {
     return "Hello, " + name + "!";
   }
}

编译错误:

HelloImpl.java:3: package javax.jws does not exist
import javax.jws.WebService;
                 ^
HelloImpl.java:5: cannot find symbol
symbol: class WebService
@WebService
 ^
2 errors

更新: 很酷,已经结束了,但它仍然不能正常工作。我创建了一个 new question 来让事情变得井井有条:

【问题讨论】:

  • 附带说明,一些 jars 仅在编译期间需要(即javac),但在运行时不需要(即java)。例如,lombok jar。

标签: java jar


【解决方案1】:

尝试以下方法:

java -cp jar1:jar2:jar3:dir1:. HelloWorld

默认的类路径(除非有 CLASSPATH 环境变量)是当前目录,所以如果你重新定义它,请确保像我一样将当前目录 (.) 添加到类路径中。

【讨论】:

【解决方案2】:

在窗口中:

java -cp C:/.../jardir1/*;C:/.../jardir2/* class_with_main_method

确保具有 main 函数的类在包含的 jar 之一中

【讨论】:

    【解决方案3】:

    Windows 用户请注意,jar 应以; 分隔,而不是:

    例如: javac -cp external_libs\lib1.jar;other\lib2.jar;

    【讨论】:

      【解决方案4】:

      使用-cp-classpath 开关。

      $ java -help  
      Usage: java [-options] class [args...]  
                 (to execute a class)  
         or  java [-options] -jar jarfile [args...]  
                 (to execute a jar file)  
      
      where options include:  
      ...  
          -cp <class search path of directories and zip/jar files>  
          -classpath <class search path of directories and zip/jar files>  
                        A ; separated list of directories, JAR archives,  
                        and ZIP archives to search for class files.  
      

      (请注意,用于分隔类路径上条目的分隔符因操作系统而异,在我的 Windows 机器上是 ;,在 *nix 中通常是 :。)

      【讨论】:

        【解决方案5】:

        javac HelloWorld.java -classpath ./javax.jar ,假设javax在当前文件夹,编译目标为“HelloWorld.java”,不用main方法也可以编译

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-10-06
          • 2011-12-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-12-20
          相关资源
          最近更新 更多