【问题标题】:Java SplashScreen.getSplashScreen() returns nullJava SplashScreen.getSplashScreen() 返回 null
【发布时间】:2021-05-25 09:50:25
【问题描述】:

试图让 SplashScreen 在 Java 中工作;不幸的是没有任何成功。 我已经阅读了很多关于它的主题,但几乎所有主题都已经很老了。

我已经建立了一个 maven 项目,并且正在关注关于 SplashScreen 的 Sun/Oracle 教程。 我正在使用 maven-jar-plugin 创建 manifest.mf 文件。在那里我指定了主类和图像文件,如教程中所示。

我的 pom.xml 文件的提取

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.2.0</version>
            <configuration>
                <archive>
                    <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

我的 manifest.mf 文件包含以下两行:

Main-Class: com.mycompany.splashscreen.MySplashScreen
SplashScreen-Image: images/java-duke-logo.jpg

我复制了src/main/resources/images中的图片,遵循了maven标准目录推荐。

不过,下面这行:

final SplashScreen splash = SplashScreen.getSplashScreen();

总是返回 null!

在生成的 jar 文件中,图像被放入包“images”中。

请寻求线索以使其发挥作用。谢谢。

(我的工作环境:MacOSX 10.13.6、jdk16、NetBeans 12.3)

【问题讨论】:

标签: java maven


【解决方案1】:

我已经设法通过编辑original project 使其工作,使用以下目录结构:

└───misc-SplashDemoProject
    │   pom.xml
    │
    └───src
        └───main
            ├───java
            │   └───com
            │       └───mycompany
            │           └───splashscreen
            │                   SplashDemo.java
            │
            └───resources
                ├───images
                │       splash.gif
                │
                └───META-INF
                        MANIFEST.MF

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 https://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>
  <groupId>com.mycompany</groupId>
  <artifactId>spashscreen</artifactId>
  <version>0.1.0-SNAPSHOT</version>

  <build>
    <plugins>
      <!-- Java 9 or later
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.0</version>
        <configuration>
          <release>16</release>
        </configuration>
      </plugin>
      -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.2.0</version>
        <configuration>
          <archive>
            <manifest>
              <mainClass>com.mycompany.splashscreen.SplashDemo</mainClass>
            </manifest>
            <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
          </archive>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

MANIFEST.MF

Manifest-Version: 1.0
X-COMMENT: Main-Class will be added automatically by build
Codebase: *.oracle.com
Permissions: sandbox
Application-Name: Splash Demo
SplashScreen-Image: images/splash.gif

我通过替换编辑了SplashDemo.java

package misc;

与:

package com.mycompany.splashscreen;

跑步:

mvn clean install

misc-SplashDemoProject/target 中创建可执行的.jar 文件

【讨论】:

  • 更新:由于某种原因,如果我运行项目,NetBeans 不会显示启动画面!如果我直接执行 jar 文件,它会显示启动画面。知道如何说服 NetBeans 正确运行吗???
  • 我并没有真正使用 NetBeans,所以对此我无能为力。但是您应该能够从命令行构建您的项目。
猜你喜欢
  • 1970-01-01
  • 2015-06-04
  • 2019-08-25
  • 2016-05-28
  • 2016-03-08
  • 2015-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多