代码之家  ›  专栏  ›  技术社区  ›  sixtyfootersdude

包括命令行(javac或apt)上类路径中的jar

  •  124
  • sixtyfootersdude  · 技术社区  · 15 年前

    正在尝试运行此程序。我认为要设置所有的Web服务,我需要运行apt(尽管使用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 为了保持事情的良好和有序:

    6 回复  |  直到 15 年前
        1
  •  146
  •   Kevin    15 年前

    尝试以下操作:

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

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

        2
  •  30
  •   Ben    15 年前

    在Windows中:

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

    确保具有主函数的类位于其中一个jar中

        3
  •  11
  •   matt b    15 年前

    使用 -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.  
    

    (请注意,用于分隔类路径上的条目的分隔符在OSE之间有所不同,在我的Windows计算机上是这样的 ; ,通常是 : )

        4
  •  11
  •   luisv    8 年前

    注意:对于Windows用户,jar应按 ; 而不是 : .

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

        5
  •  3
  •   Community CDub    8 年前

    使用:

    apt HelloImpl.java -classpath /sac/tools/thirdparty/jaxws-ri/jaxws-ri-2.1.4/lib/jsr181-api.jar:.
    

    有效,但它给了我另一个错误,看 new question

        6
  •  2
  •   Stoica Mircea    8 年前

    javac HeloRoLd.javaCaspase/javax .jar,假设javax在当前文件夹中,并且编译目标是“HeloLogL.java”,并且可以在没有主方法的情况下编译。