我理解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)
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) 当我尝试将项目导出为可运行的jar时,Eclise给出了以下错误:
没有选择资源.
该项目在Eclipse中运行良好,我已经尝试在导出之前清理项目,但是没有用.
有想法该怎么解决这个吗.
我在Gradle 4.6中有一个简单的项目,并希望制作一个可执行的jar.我试过shadow,gradle-fatjar-plugin,gradle-one-jar,spring-boot-gradle-plugin插件,但他们都没有增加我的依赖性声明implementation(我没有任何compile的).它适用compile于gradle-one-jar插件,但我想有implementation依赖.
非常感谢你!
我想按如下方式启动和停止我的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)
我该怎么办?
我在应用程序中有两个主要类.当我将它打包到一个可运行的jar(使用Eclipse导出函数)时,我必须选择一个默认的主类.
有没有办法在运行时从jar访问非默认主类?
我创建了一个使用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) 我有jar文件,我想从Windows 7中的Windows调度程序运行
我已经给出了路径java.exe/脚本和-jar c:\abc\ab.jar参数字段中的路径.
但它没有运行.我也在bat文件的帮助下尝试过,但它没有运行.运行jar文件需要做什么?
我的jar文件创建文件并更新数据库.
我有一个有多个主要类的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项目,从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内部运行时都有效).
是什么原因造成了这个错误以及我如何解决它?如果我应该提供任何其他信息,请告诉我.
我正在编写一个嵌入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)