私はJavaの初心者で、これが何か間違ったことをしているためかどうかわかりません。
私のアプリはそれほど複雑ではありません。5つのパッケージがあります。そのうちの 1 つ、carlosgoce
パッケージにはメソッドを持つApp
クラスがありmain
ます。そこから、packagePrincipal
を拡張するクラスをインスタンス化します。JFrame
gui.Principal
だから、私のApp
クラスは次のようなものです:
package carlosgoce;
import javax.swing.JFrame;
import gui.Principal;
public class App {
public static void main(String[] args) {
Principal ventana = new Principal();
ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ventana.setLocationRelativeTo(null);
ventana.setVisible(true);
}
}
ちなみにベンタナは窓という意味です。
です。Principal
_JFrame
Netbeans の「再生」ボタンをクリックすると、私のアプリは完全に機能します。生成された jar を使用しようとすると、開くことができないと表示されます。プロジェクトのプロパティを確認し、main
クラスが選択されているかどうかを確認します。「保存時にコンパイル」を無効にするためにスタックオーバーフローを読みました。しましたが、役に立ちませんでした。
.jar ファイルを開こうとすると、うまくいきません。Clean/Build も試しました。
次に、Netbeans によって自動生成された JFrame クラスにもmain
メソッドがあることに気付き、コメントしました (プロジェクトが複数のメイン メソッドを持つことができるかどうかはわかりません)。jar ファイルからではなく Netbeans から起動した場合、アプリは引き続き動作します。
多分それはMavenのせいですか?こちらも初利用。PHPのコンポーザーに似ていることがわかりました。OpenCSV 依存関係を追加するだけです。
次に何をすべきかわかりません。手助け?
ありがとうございました!
詳細: これは私の現在の pom.xml ファイルです:
<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>carlosgoce</groupId>
<artifactId>distribuir.articulos</artifactId>
<version>1.02-SNAPSHOT</version>
<packaging>jar</packaging>
<name>distribuir.articulos</name>
<url>http://maven.apache.org</url>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>carlosgoce.principal.App</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>attached</goal>
</goals>
</execution>
</executions>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.sf.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>2.0</version>
</dependency>
</dependencies>
</project>
Netbeans の clean/build でコンパイルすると、次のマニフェスト ファイルが得られます。
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: acliente7
Build-Jdk: 1.7.0_25
Main-Class: carlosgoce.principal.App
Class-Path: opencsv-2.0.jar
良さそうに見えますが、.jar ファイル内に opencsv-2.0.jar が見つからず、アプリが機能しません。
プロジェクトを cleand でコンパイルしてから「依存関係を使用してビルド」すると、次のマニフェスト ファイルが得られます。
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: 23.25-b01 (Oracle Corporation)
そのため、「Class-Path: opencsv-2.0.jar」と私のプロジェクトの情報を含む行が欠落しています。しかし、opencsv は私の .jar ファイル内にあります。
ヒントはありますか?
コマンド mvn clean compile assembly:single を使用したアプリのコンパイルを修正しました
質問に対して何かをしなければならないかどうかわかりません