Komut satırında sınıf yoluna kavanozlar dahil (javac veya apt)


137

bu programı çalıştırmaya çalışıyor. Ben tüm web hizmeti şeyler kurmak için apt çalıştırmak gerektiğini düşünüyorum. (Javac kullanmamıza rağmen aynı sorunu yaşıyorum). Ben alıyorum derleme hataları olduğunu düşünüyorum. (Altta gösterilir).

Yapmam gereken şey bu kavanozu sınıf yoluma dahil etmek olduğunu düşünüyorum: jsr181-api.jar (kaynak) . Bunu yapmanın basit bir geçici yolu var mı (solaris üzerinde)? Ben bash_rc dosyama eklemek istemiyorum (sonsuza kadar orada). Ayrıca, manifest metin dosyası kullanarak bunu yapmanın bir yolu olduğunu biliyorum ama bu karmaşık görünüyordu, bu yüzden henüz içine bakmadım. Sadece şöyle bir şey yapabilir miyim:

javac HelloImp <listOfJars>

veya

ant HelloImp <listOfJars>

Kod:

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 + "!";
   }
}

Derleme hataları:

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

Güncelleme: Sarılmış ama hala iyi çalışmıyor. İşleri güzel ve düzenli tutmak için yeni bir soru yarattım :


Bir yan not olarak, bazı kavanozlara sadece derleme sırasında ihtiyaç duyulur (yani javac), çalışma zamanında (yani java). Örneğin, lombokkavanoz.
truthadjustr

Yanıtlar:


170

Takip etmeyi dene:

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

Varsayılan sınıf yolu (bir CLASSPATH ortam değişkeni olmadığı sürece) geçerli dizindir, bu nedenle yeniden tanımladığınızda, yaptığım gibi sınıf yoluna geçerli dizini (.) Eklediğinizden emin olun.



@ CoolAJ86 Bağlantı kopmuş gibi görünüyor
Janis Peisenieks

30
Bulduğum en iyi yol kullanmak java -cp *:. HelloWorld. Bu şekilde sınıf yolumdaki tüm kavanozlar her zaman dahil edilir.
NN

31

Pencerelerde:

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

ana işlevli sınıfın dahil edilen kavanozlardan birinde olduğundan emin olun


20

Windows kullanıcıları için kavanozlar birbirinden ayrılmalı ;ve ayrılmamalıdır :.

Örneğin: javac -cp external_libs\lib1.jar;other\lib2.jar;


14

-cpVeya -classpathanahtarını kullanın .

$ 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.  

(Sınıf yolundaki girişleri ayırmak için kullanılan ayırıcı işletim sisteminin işletim sistemleri arasında farklılık gösterdiğini, Windows makinemde ;genellikle * nix'de olduğunu unutmayın :.)


3

Kullanımı:

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

çalışıyor ama bana başka bir hata veriyor, yeni soruya bakın


2

javac HelloWorld.java -classpath ./javax.jar, javax'ın geçerli klasörde olduğunu ve hedefin "HelloWorld.java" olduğunu varsayarsak, ana yöntem olmadan derleyebilirsiniz

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.