有什么区别:
InputStream is = this.getClass().getClassLoader().getResourceAsStream(fileName)
Run Code Online (Sandbox Code Playgroud)
和
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName)
Run Code Online (Sandbox Code Playgroud)
和
InputStream is = this.getClass().getResourceAsStream(fileName)
Run Code Online (Sandbox Code Playgroud)
每个人何时比其他人更适合使用?
我想要读取的文件在类路径中作为我的类来读取文件.我的类和文件位于同一个jar中,并打包在EAR文件中,并部署在WebSphere 6.1中.
我创建了一个使用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项目,从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中继续这样做: javax.imageio.IIOException:无法读取输入文件!
package graphics;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import src.Common;
public class Window extends JFrame
{
public class Panel extends JPanel
{
public void paintComponent(Graphics g)
{
Image img;
try
{
img = ImageIO.read(new File("/logo.jpg"));
g.drawImage(img, 0, 0, this);
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
public Window(String title, int width, int height)
{
this.setTitle(title);
this.setSize(width, height);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setContentPane(new Panel());
this.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)
}
我认为代码非常自我解释.我试图用这个 …
我正在创建一个GUI,虽然是一个简单的GUI,我希望有一个背景图像(2048 X 2048)填满整个窗口和左上角的正方形,偶尔可以加载64 X 64图像.感谢任何帮助过的人:)编辑:我已经知道如何使JFrame成为一个设定的大小,它需要帮助的图像加载.
我的Java应用程序有问题,特别是从我的计算机中的某个位置加载图像.
在这篇文章之后,我使用a BufferedImage和a InputFileStream在我的计算机上加载图像.首先,我将image(pic2.jpg)放入源代码中,这是有效的.但是,如果我把图像放到另一个地方(让我们说C:\\ImageTest\pic2.jpg),Java IDE 会给我看一个IllegalArgumentException
return ImageIO.read(in);
Run Code Online (Sandbox Code Playgroud)
这是代码:
public class MiddlePanel extends JPanel {
private BufferedImage img;
public MiddlePanel(int width) {
//img = getImage("pic2.jpg");
img = getImage("C:\\ImageTest\\pic2.jpg");
this.setPreferredSize(new Dimension(800,460));
}
public void paintComponent(Graphics g) {
// ...
}
private BufferedImage getImage(String filename) {
// This time, you can use an InputStream to load
try {
// Grab the InputStream for the image.
InputStream in = getClass().getResourceAsStream(filename);
// Then read it. …Run Code Online (Sandbox Code Playgroud) 我创建了一个java应用程序并将所有类捆绑在一个jar文件中.当我从eclipse运行项目时,我的应用程序运行成功.但是当我尝试运行我的.jar文件时,我没有得到我的应用程序使用的图标.在代码中,我从项目文件夹中的images目录中获取了我的图标.使用jar时,如何将这些图像文件呈现给最终用户?
我正在加载图像:
final public ImageIcon iReport=new ImageIcon("images/Report.png");
Run Code Online (Sandbox Code Playgroud)
我也试过了
final public ImageIcon iquit=new ImageIcon(getClass().getResource("images/quit.png"));
Run Code Online (Sandbox Code Playgroud)
和
final public ImageIcon iquit=new ImageIcon(getClass().getResource("/images/quit.png"));
Run Code Online (Sandbox Code Playgroud)
但这会导致错误:
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
Run Code Online (Sandbox Code Playgroud) 当我从eclipse将我的代码导出为runnable JAR时,即使它们实际上在JAR中,我设置它的所有文件都会丢失,例如按钮图像和其他文件.我已经getClass().getResource在文件前添加了但是当我尝试运行JAR时甚至没有任何建议,有什么建议吗?
我正在尝试使用Java制作一个非常基本的游戏,而我在显示图像时遇到问题JFrame.它曾经为我工作过,现在不是,我看不出我做错了什么.
我已经尝试打印当前的工作目录并更改我的图像匹配的位置.问题很可能是没有得到图像,因为我的(文件查找器或文件阅读器或类似的东西)可以毫无问题地找到它,但我无法正确地将它(或ImageIcon)添加到JLabel,或者那个JFrame.
这是我的代码......
JFrame frame = new JFrame("no image");
ImageIcon image = new ImageIcon("C:/Documents and Settings/user/Desktop/hi/xD/JavaApplication2/image.png");
JLabel imagelabel = new JLabel(image);
frame.add(imagelabel);
Run Code Online (Sandbox Code Playgroud)
在JFrame已经setVisible(true)和pack().
请有人帮我理解出了什么问题.
我想提前感谢您抽出时间阅读我的问题,我将非常感谢您提供的任何评论,答案,见解,技术和批评.
我正在寻找一种有用的方法来更改Java应用程序的桌面图标.我已经调查了几天,但是没有找到准确的结果.
在您将其标记为重复并将其称为重复之前,我已阅读:如何更改Java中的默认应用程序图标?对其他提出这个问题的人),但这并没有解决我的具体问题.我知道他们的方法使用url位置而不是导入,但我试图学习如何使用导入(如果这样,实际上可能).当我尝试使用他们的方法来改变源位置时.除此之外,url示例似乎不适用于存储在计算机上的文件.当我尝试运行它时,我收到"未捕获的错误"消息.
我使用以下格式声明我已导入NetBeans的图像:
Image image = new ImageIcon("imported.png").getImage();
frame.setIconImage(image);
Run Code Online (Sandbox Code Playgroud)
现在这适用于工具栏中显示的图标,它也出现在框架的左上角,但是当我清理和构建它时,我仍然将Java咖啡杯作为应用程序的图标.
有关我用于尝试此操作的代码的其他资源:
import java.awt.Image;
import javax.swing.*;
public class Check {
JFrame frame;
public static void main(String[] args) {
new Check().go();
}
private void go() {
frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Image image = new ImageIcon("owl.gif").getImage();
frame.setIconImage(image);
frame.setVisible(true);
frame.setSize(300, 300);
}
}
Run Code Online (Sandbox Code Playgroud)
"owl.gif"位是我通过单击和拖动方法导入到NetBeans中的内容(如我在其中一本专注于NetBeans的书籍中所述).
我正在寻找一种方法来创建一个文件,我已经在我的计算机上保存了应用程序的桌面图标.