2012-06-21 24 views
5

Maven with NetBeans 7.1 kullanırken şu anda sorun yaşıyorum ve sorun yaşıyorum - Sistem kapsamında bir Maven deposuna yerleştiremediğim bir lib ekledim.NoClassDefFoundError sistem kapsamını kullanırken

<dependency> 
    <groupId>org.company</groupId> 
    <artifactId>FBTM</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <scope>system</scope> 
    <systemPath>${project.basedir}/lib/FBTM-1.0-SNAPSHOT.jar</systemPath> 
</dependency> 

IDE o bağımlılıklar klasörü (Proje görünümünde) gösterir ve ben kavanoz içeriğini görüntülemek mümkün olduğum gibi, bu bağımlılık cezası almak gibi görünüyor: Aşağıdaki gibi görünür. Herhangi bir sorun olmadan da dersleri kavanozdan alabilirim. Ancak

, ben söz konusu sınıf için NoClassDefFoundError olsun (ve çalışma zamanı kullanımda sınıfların herhangi vardır) projemi çalıştırma girişiminde. Herhangi bir sınıf olabilir.

stacktrace:

Exception in thread "main" java.lang.NoClassDefFoundError: com/company/otaupdate/sim/commands/Select at com.company.fbtranslationlibrary.mc.scripts.UserData$1.<init>(UserData.java:30) at com.company.fbtranslationlibrary.mc.scripts.UserData.<init>(UserData.java:28) at com.company.fbtranslationlibrary.mc.MS.get_profile_script(MuscadeScript.java:80) at com.company.fbtranslationlibrary.mc.MS.access$300(MS.java:16)

Herhangi bir yardım veya işaretçiler büyük takdir! Sistem kapsamında İçin

+1

Sorunlar belirtildiği? – m0skit0

+0

kapsamı: Sistem yanlış geliyor, öyle olması gerekiyor mu? Veya hiç (veya derleme) ile deneyebilirsiniz. – esej

+0

Tam istisna mesaj/yığın izi nedir? – Attila

cevap

2

:

Maven Doc diyor ki:

sistem

açıkça onu içeren JAR sağlamak zorunda olması dışında sağlanan Bu kapsam benzer. Eser her zaman kullanılabilir ve bir havuzda aranmaz.

Kişisel IDE nasılsa kavanozu sağlar. Ancak 'u çalıştırırken,'u sağlamanız gerekir.

Varsayılan kapsamı deneyin (kapsam etiketi yok).

düzenleme: Eğer maven sistem kapsamı tutmak istiyorsanız, sınıf yolu üzerinden jar çalışma zamanı sağlamanız gerekir.

+3

Kapsam etiketi kullanmadan sistemPath etiketi geçersiz olur. – krslynx

0

NetBeans uygulama yürütücüsünün, bu JAR dosyasını yürütme sınıf yoluna yerleştirecek kadar akıllı olmadığı ortaya çıkar.

Neden bu bağımlılık için JAR ve POM dosyalarını yerel yerel havuzunuza eklemiyorsunuz? Sonra düzenli bağımlılık kullanabilirsiniz. Bu uygulama için NetBeans uygulama başlatıcısı için çalışma zamanı sınıf yolunu değiştirmenin bir yolu olup olmadığını görmek için bkz. (Ben bir Eclipse biriyim ... Burada doğru terminoloji kullanıyorum emin değilim.) Ben proje için aşağıdaki build.xml oluşturarak bu sorunu çözmüş

+0

Ben bir m2 projesi olmadığı için JAR'ı bu bağımlılık için sağlayabilirim. Bu yeterli olur mu? – krslynx

0

:

<!-- make the repo dir --> 
    <mkdir dir="${m2.home}" /> 

    <!-- copy libs --> 
    <copy todir="${m2.home}"> 
     <fileset dir="dist"/> 
    </copy> 

    <!-- copy pom --> 
    <copy todir="${m2.home}"> 
     <fileset dir="pom"/> 
     <mapper> 
      <mapper type="regexp" 
       from="pom.xml" to="${m2.app.name}-${m2.app.ver}.pom" /> 
     </mapper> 
    </copy> 

    <!-- use naming policy --> 
    <copy todir="${m2.home}"> 
     <fileset dir="dist"/> 
     <mapper> 
      <mapper type="regexp" 
       from="${m2.app.name}.jar" to="${m2.app.name}-${m2.app.ver}.jar" /> 
     </mapper> 
    </copy> 

    <!-- remove unnecessiary files --> 
    <delete> 
    <fileset dir="${m2.home}"> 
     <include name="${m2.app.name}.jar"/> 
     <include name="README.TXT"/> 
    </fileset> 
    </delete> 
</target> 

Ben elle de aynı adlandırma kurallarını kullanarak yerel deposuna üzerinden kopyalama projesi için bir pom.xml dosyası oluşturmak zorunda kaldı. Bu mümkün olan en iyi çözüm değil, ama yeterince iyi çalışıyor.

İlgili konular