标签: executable-jar

Class.getResource()和ClassLoader.getResource()在可执行jar中的奇怪行为

我理解Class.getResource()和ClassLoader.getResource()之间有什么区别? 从自己的代码,那

getClass().getResource("/path/image.png")
Run Code Online (Sandbox Code Playgroud)

是完全相同的

getClass().getClassLoader().getResource("path/image.png")
Run Code Online (Sandbox Code Playgroud)

发布无法读取jar文件中的图像显示使用的问题

getClass().getClassLoader().getResource("path/image.png")
Run Code Online (Sandbox Code Playgroud)

在可执行jar文件中返回null,而

getClass().getResource("/path/image.png")
Run Code Online (Sandbox Code Playgroud)

返回正确的URL.

Since Class.getResource()代表ClassLoader.getResource()在删除前导斜杠后,我希望这些调用是相同的,但显然它们不是这种情况.即使特殊类加载器附加到特定类,每次调用它仍然应该是相同的,再次导致相同的行为.

所以,问题是:是否存在以下代码在第一次调用时返回null但第二次调用的正确URL的任何明显情况?

package com.example;

import java.net.URL;

public class ResourceTest {

   public void run() {
      URL iconUrl1 = getClass().getClassLoader().getResource("path/image.png");
      System.out.println("ClassLoader.getResource(\"path/image.png\"): " + iconUrl1);

      URL iconUrl2 = getClass().getResource("/path/image.png");
      System.out.println("Class.getResource(\"/path/image.png\"): " + iconUrl2);
   }

   public static void main(String[] args) {
      ResourceTest app = new ResourceTest();
      app.run();
   }
}
Run Code Online (Sandbox Code Playgroud)

java executable-jar classloader embedded-resource

34
推荐指数
1
解决办法
5万
查看次数

Eclipse无法创建可运行的jar - 没有选择资源

当我尝试将项目导出为可运行的jar时,Eclise给出了以下错误:

没有选择资源.

该项目在Eclipse中运行良好,我已经尝试在导出之前清理项目,但是没有用.

有想法该怎么解决这个吗.

java eclipse executable-jar

32
推荐指数
4
解决办法
4万
查看次数

如何使用Gradle创建具有实现依赖性的可执行胖jar

我在Gradle 4.6中有一个简单的项目,并希望制作一个可执行的jar.我试过shadow,gradle-fatjar-plugin,gradle-one-jar,spring-boot-gradle-plugin插件,但他们都没有增加我的依赖性声明implementation(我没有任何compile的).它适用compilegradle-one-jar插件,但我想有implementation依赖.

非常感谢你!

java executable-jar gradle gradle-plugin fatjar

32
推荐指数
5
解决办法
1万
查看次数

在linux中启动类似服务的jar文件

我想按如下方式启动和停止我的jar文件

service myService start

service myService stop

我当前的jar文件运行如下

cd /home/alex/IdeaProjects/myService
java -jar target/myService-SNAPSHOT-1.jar server config.yml
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

java linux shell jar executable-jar

31
推荐指数
2
解决办法
7万
查看次数

在运行时选择可运行jar中的主类

我在应用程序中有两个主要类.当我将它打包到一个可运行的jar(使用Eclipse导出函数)时,我必须选择一个默认的主类.

有没有办法在运行时从jar访问非默认主类?

java jar executable-jar

29
推荐指数
2
解决办法
5万
查看次数

如何在可执行的Jar中包含SQLite数据库?

我创建了一个使用SQLite作为本地数据库的Swing应用程序.数据库文件位于项目的根目录中.

Project/DatabaseFile
Run Code Online (Sandbox Code Playgroud)

应用程序在Eclipse上运行良好,但是当我运行打包的可执行文件Jar时,我收到以下错误:

No such table : table1
Run Code Online (Sandbox Code Playgroud)

这意味着无法访问数据库.当我检查生成的JAR文件的内容时,数据库文件不再存在.

在代码中,我将数据库链接如下:

jdbc:sqlite:DatabaseFile
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何将SQLite数据库包含在可执行的Jar中?

编辑

当我将DB文件放在源文件夹中Project/src/DatabaseFile并将路径更改为时jdbc:sqlite:src/DatabaseFile,它在Eclipse上运行,但在运行Jar文件时再次运行java -jar Project.jar.它说:

path to 'src/DatabaseFile': 'C:\Users\name\src' does not exist
Run Code Online (Sandbox Code Playgroud)

我想我需要为数据库指定一个相对路径.

编辑

这是我连接数据库的方式:

public Connection getConnection(){      
    try{
        Class.forName("org.sqlite.JDBC").newInstance();             
        con = DriverManager.getConnection("jdbc:sqlite:src/DatabaseFile");              

    } catch (Exception e) {
        Log.fatal("Méthode: getConnection() | Class  : SQLiteConnection | msg system : " + e.getMessage());
    }
    return con;
}
Run Code Online (Sandbox Code Playgroud)

java sqlite swing executable-jar

29
推荐指数
1
解决办法
3万
查看次数

使用Windows调度程序运行jar文件

我有jar文件,我想从Windows 7中的Windows调度程序运行

我已经给出了路径java.exe/脚本和-jar c:\abc\ab.jar参数字段中的路径.

但它没有运行.我也在bat文件的帮助下尝试过,但它没有运行.运行jar文件需要做什么?

我的jar文件创建文件并更新数据库.

scheduled-tasks executable-jar windows-7

28
推荐指数
2
解决办法
5万
查看次数

从单个Maven项目创建多个可运行的Jars(包含依赖项)

我有一个有多个主要类的maven项目.我想从这些项目中生成可运行的Jars(包括所有依赖项).我目前有以下构建配置(使用maven.assembly):

<build>
<plugins>
    <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
            <archive>
                <manifest>
                    <mainClass>classpath.to.my.mainClass</mainClass>
                </manifest>
            </archive>
            <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
        </configuration>
    </plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

他们是用maven-assembly来实现这个目标的吗?如果没有,实现目标的最简单方法是什么?

java executable-jar maven maven-assembly-plugin

27
推荐指数
4
解决办法
4万
查看次数

运行Eclipse导出的jar时"找不到主类"错误

我有一个java项目,从Eclipse中运行它时可以正常工作.当我尝试将其导出到a "JAR file""Runnable JAR file".jar文件时创建,但是当我双击它以尝试运行该程序时,它会给我一个错误

"Could not find the main class: package.MainClassName. Program will exit."
Run Code Online (Sandbox Code Playgroud)

正如我所提到的,我尝试导出到两个JAR选项,我指定了main方法所在的正确类,当我查看文件中的实际文件时,.jar一切似乎都是有序的 - 清单看起来像:

Manifest-Version: 1.0
Main-Class: package.MainClassName
(blank line)
Run Code Online (Sandbox Code Playgroud)

并在META-INF文件夹中.我的包名称有一个文件夹,其中包含所有.class文件,包括包含main方法的类.我使用的一些图像和文本文件也出现在jar文件中.

实际的程序并不是太复杂 - 它是一个使用Swing的简单"蛇"游戏(加上代码在Eclipse内部运行时都有效).

是什么原因造成了这个错误以及我如何解决它?如果我应该提供任何其他信息,请告诉我.

java eclipse swing jar executable-jar

27
推荐指数
4
解决办法
10万
查看次数

只有当依赖性组装成一个罐子时才会抛出泽西异常

我正在编写一个嵌入Jetty w/Jersey的服务器.当我从Eclipse执行时,一切都很棒.但是,如果我使用Maven的程序集将我的服务器和所有依赖项组装到一个jar中:单个目标,我会得到一个例外:

Sep 26, 2012 5:35:59 PM com.sun.jersey.spi.container.ContainerResponse write
SEVERE: A message body writer for Java class com.acme.server.webservice.
exception.WebServiceFailure, and Java type class com.acme.server.webserv
ice.exception.WebServiceFailure, and MIME media type application/json was not fo
und
Sep 26, 2012 5:35:59 PM com.sun.jersey.spi.container.ContainerResponse write
SEVERE: The registered message body writers compatible with the MIME media type
are:
*/* ->
  com.sun.jersey.server.impl.template.ViewableMessageBodyWriter

17:35:59.372 [qtp184245201-22 - /] ERROR o.a.h.ReflectorServletProcessor - onReq
uest()
javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException: A mess
age body writer for Java class com.acme.server.webservice.exception.WebS
erviceFailure, and Java …
Run Code Online (Sandbox Code Playgroud)

java jar jersey executable-jar maven

27
推荐指数
1
解决办法
6142
查看次数