2016-03-31 32 views
0

Maven'de yeni. Maven Project oluşturulan ve (başarılı inşa) yüklü, ama ben komut isteminden kavanoz dosyasını çalıştırmak cant, buKavanoz dosyası çalıştırılamıyor (Maven Project)

Error: Unable to access jarfile

Ben POM dosyasında hata var düşünmek diyor

<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>ru.nick.kru</groupId> 
    <artifactId>ParagonCase</artifactId> 
    <version>1.1</version> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <version>2.4</version> 
       <configuration> 
        <archive> 
         <manifest> 
          <addClasspath>true</addClasspath> 
          <mainClass>Main</mainClass> 
          <packageName>ru.nick.kru</packageName> 
          <addClasspath>true</addClasspath> 
          <classpathPrefix>lib/</classpathPrefix> 
         </manifest> 
        </archive> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.8.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-io</artifactId> 
      <version>1.3.2</version> 
     </dependency> 

    </dependencies> 
</project> 
+1

bu çok belirsiz. Açık dosyanız doğru mu? Başlamak için ana bir yöntem var mı? Java yapılandırılmış mı? ... – Stultuske

+1

ayrıca, bu komutu çalıştırmak için hangi komutu kullanıyorsunuz? Muhtemelen bir şişman kavanoza ihtiyacınız var, aksi halde bağımlılıklar dahil edilmeyecek ve ana muhtemelen büyük olasılıkla başarısız olacaktır (dolayısıyla Maven Shade Plugin'e bakın). Son fakat en önemlisi, junit bağımlılığı test kapsamında olmalıdır. –

+0

Sanırım manifest doğru. Java'yı pom dosyasında yapılandırmalı mıyım? – Nick

cevap

0

Bina Maven ile bir yürütülebilir Jar dosyası zor olabilir, ancak bunu yapmanın bir yolu var! Doğru yoldasınız gibi görünüyor, ancak eklenti "packageName" özelliğinde "ParagonCase" eksik olabilir (Ana işleviniz ru.nick.kru.ParagonCase.Main ise, o zaman packageName ru olmalıdır. nick.kru.ParagonCase).

Ayrıca, Jar içindeki tüm bağımlılıkları birleştiren maven gölgesi eklentisini kullanmanın yararlı olduğunu da öğrendim (yani, Jar'ı çalıştırdığınızda sınıf yolunuzdaki tüm bağımlılıkları gerekmez). (Bu mvn package ile oluşturulduktan sonra) Jar çalıştırmak için

<build> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-shade-plugin</artifactId> 
    <version>2.3</version> 
    <executions> 
     <!-- Run shade goal on package phase --> 
     <execution> 
     <phase>package</phase> 
     <goals> 
      <goal>shade</goal> 
     </goals> 
     <configuration> 
      <transformers> 
      <!-- add Main-Class to manifest file --> 
      <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
       <mainClass>ru.nick.kru.ParagonCase.Main</mainClass> 
      </transformer> 
      </transformers> 
     </configuration> 
     </execution> 
    </executions> 
</plugin> 
</build> 

:

POM size şu inşa eklentisi ekleyebilir. Java ile başlatın:

java -jar ParagonCase.jar 
+0

Thx, jar'ı sadece .jar olarak kullanmayı unuttum. – Nick

İlgili konular