Tôi cố gắng để tạo ra một jar thực thi cho một dự án nhà nhỏ gọi là "logmanager" sử dụng maven, chỉ cần như thế này:Xây dựng lọ thực thi với con quạ?
How can I create an executable JAR with dependencies using Maven?
tôi đã thêm đoạn cho thấy có đến pom.xml, và chạy mvn lắp ráp: lắp ráp. Nó tạo ra hai tệp jar trong logmanager/target: logmanager-0.1.0.jar và logmanager-0.1.0-jar-with-dependencies.jar. Tôi nhận được một lỗi khi tôi double-click vào jar đầu tiên:
Could not find the main class: com.gorkwobble.logmanager.LogManager. Program will exit.
Một lỗi hơi khác nhau khi tôi kích đúp vào dependencies.jar jar-với-:
Failed to load Main-Class manifest attribute from: C:\EclipseProjects\logmanager\target\logmanager-0.1.0-jar-with-dependencies.jar
tôi sao chép và dán đường dẫn và tên lớp, và kiểm tra chính tả trong POM. Lớp học chính của tôi khởi chạy tốt từ cấu hình khởi chạy nhật thực. Ai đó có thể giúp tôi tìm ra lý do tại sao tệp jar của tôi không chạy? Ngoài ra, tại sao có hai lọ để bắt đầu? Hay noi tôi nêu bạn cân thêm thông tin.
Dưới đây là toàn bộ pom.xml
, để tham khảo:
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.gorkwobble</groupId>
<artifactId>logmanager</artifactId>
<name>LogManager</name>
<version>0.1.0</version>
<description>Systematically renames specified log files on a scheduled basis. Designed to help manage MUSHClient logging and prevent long, continuous log files.</description>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<!-- nothing here -->
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-4</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.gorkwobble.logmanager.LogManager</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<!-- commons-lang -->
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.4</version>
</dependency>
<!-- Quartz scheduler -->
<dependency>
<groupId>opensymphony</groupId>
<artifactId>quartz</artifactId>
<version>1.6.3</version>
</dependency>
<!-- Quartz 1.6.0 depends on commons collections -->
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.1</version>
</dependency>
<!-- Quartz 1.6.0 depends on commons logging -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1</version>
</dependency>
<!-- Quartz 1.6.0 requires JTA in non J2EE environments -->
<dependency>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<version>1.1</version>
<scope>runtime</scope>
</dependency>
<!-- junitx test assertions -->
<dependency>
<groupId>junit-addons</groupId>
<artifactId>junit-addons</artifactId>
<version>1.4</version>
<scope>test</scope>
</dependency>
<!-- junit dependency; FIXME: make this a separate POM -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.1</version>
</dependency>
</dependencies>
<dependencyManagement>
</dependencyManagement>
</project>
Cảm ơn nhận xét của bạn! Tôi đã thay đổi tệp pom.xml của mình như bạn đã chỉ định.Khi tôi chạy mvn clean install, tôi nhận được một loạt các lỗi biên dịch từ mã của tôi, nói rằng các chú thích và vân vân không được hỗ trợ trong nguồn 1.3. Tôi đang sử dụng jdk1.6 và nó biên dịch trong nhật thực; Tôi không chắc làm thế nào 1,3 đã được giới thiệu. Có lẽ một trong các phiên bản thư viện trong đoạn mã pom là một phiên bản cũ hơn? – RMorrisey
Cảm ơn! Tôi đã vượt qua vấn đề 1.3. Tôi cũng phải thêm phụ thuộc junit4 vào POM của tôi. Tôi đang làm việc để khắc phục sự cố các nội dung khác; nếu tôi gặp khó khăn, tôi sẽ đăng lại! Nếu tôi lấy bình chạy, tôi sẽ đánh dấu nó là câu trả lời. POM hiện tại của tôi được cập nhật trong câu hỏi trên. – RMorrisey
Có cách nào để loại trừ tài nguyên khỏi tệp jar được tạo không? –