2010-08-02 42 views
11

Tôi đã tạo ứng dụng scala và bây giờ tôi muốn xây dựng lọ. tôi chạy mvn package hơn tôi cố gắng chạy jar bởi lệnhBình xây dựng với maven-scala-plugin

java -jar target/burner-1.0-SNAPSHOT.jar

và tôi thấy lỗi:

Failed to load Main-Class manifest attribute from

Làm thế nào tôi có thể định nghĩa Main-Class sở hữu? Tôi có cần tạo Manifest.mf không? Ở đâu? Hoặc tôi cần phải có thuộc tính lớp chính ở đâu đó trong tệp pom.xml?

Cập nhật: Tôi đã tạo ra src/main/nguồn/file MANIFEST.MF với nội dung

Manifest-Version: 1.0 
Archiver-Version: Plexus Archiver 
Created-By: Apache Maven 
Built-By: itsabear 
Main-Class: ru.dmteam.App 
Build-Jdk: 1.6.0_20 

Tôi không quên dòng kết thúc vào cuối tập tin. sau mvn package Tôi thấy bình mới. Tôi đã kiểm tra manifest.mf trong jar này - nó chứa đúng chính-class nhưng khi tôi gõ java -jar target/burner-1.0-SNAPSHOT.jar tôi vẫn thấy một lỗi Failed to load Main-Class manifest attribute from

pom.xml My http://pastie.org/1070483

UPDATE 2 tôi phát hiện ra rằng hiện nay có hai tệp manifest.mf trong jar. MANIFEST.MF và META-INF/MANIFEST.MF tôi chuyển MANIFEST.MF tùy chỉnh của tôi để vừa tạo thư mục META-INF (trong src/main/nguồn lực) nhưng bây giờ mvn package ghi đè nó trong khi tạo jar ...

+0

Bạn có thể gửi một bản sao của pom.xml của bạn? Bạn có thể thực hiện việc này trong Maven mà không cần phải tạo thủ công tệp kê khai. –

+0

Tôi đã cập nhật bài đăng. –

+0

Tôi đã khám phá một số thông tin mới và cập nhật bài đăng. –

Trả lời

14

Sau khi tạo một dự án maven mới bằng cách sử dụng nguyên mẫu scala-nguyên mẫu-đơn giản (một dự án đơn giản mà in 'Hello World '), Tôi cần thêm thông tin sau vào pom.xml của mình

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <version>2.2-beta-5</version> 
    <configuration> 
     <descriptorRefs> 
     <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
     <archive> 
     <manifest> 
      <mainClass>test.App</mainClass> 
     </manifest> 
     </archive> 
    </configuration> 
    <executions> 
     <execution> 
     <phase>package</phase> 
     <goals> 
      <goal>single</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 

cho lớp test.App để chạy như mong muốn khi gọi với lệnh

java -jar ./target/mytest-1.0-SNAPSHOT-jar-with-dependencies.jar 

Sau khi chạy lệnh

mvn package 
+0

Khi tôi gõ gói mvn, tôi thấy lỗi ''đơn' được chỉ định trong thực thi, nhưng không được tìm thấy trong pluin' ' –

+0

vì vậy bây giờ tôi có thể xây dựng jar làm việc bằng lệnh mvn assembly: assembly nhưng tôi cần chạy nó với lệnh 'java -cp target/file.jar -DmainClass ru.dmteam.App'. Có thể tạo jar với biểu hiện đúng không? –

+0

Thành phần phải ràng buộc việc tạo lắp ráp với pha gói thông thường, bạn đã bao gồm nó trong tệp pom.xml chưa? Mục nhập phải được định cấu hình để chứa ru.dmteam.App trong trường hợp của bạn. –

-1

bạn có thể chạy jar cách này mục tiêu -cp

scala/projectname-1,0-SNAPSHOT.jar

+1

Lệnh này sẽ mở bảng điều khiển thông dịch scala. –

Các vấn đề liên quan