我试图在JPanel上显示图片,但我一直收到错误:
java.lang.IllegalArgumentException:input == null!
我不明白发生了什么.
这是我正在使用的代码:
public void actionPerformed(ActionEvent e) {
try {
Image image=ImageIO.read(getClass().getResource("img/" +num.getText()+".jpg"));
Image resized = image.getScaledInstance(200, 200, 100);
pictureFrame.setIcon(new ImageIcon(resized));
} catch (Exception ex){
ex.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
这只会导致我收到错误!
堆栈跟踪产生以下结果:
Java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(ImageIO.java:1362)
at work.Item.actionPerformed(Item.java:96)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6297)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)
at java.awt.Component.processEvent(Component.java:6062)
at java.awt.Container.processEvent(Container.java:2039)
at java.awt.Component.dispatchEventImpl(Component.java:4660)
at java.awt.Container.dispatchEventImpl(Container.java:2097)
at java.awt.Component.dispatchEvent(Component.java:4488)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4575)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4236)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4166)
at java.awt.Container.dispatchEventImpl(Container.java:2083)
at java.awt.Window.dispatchEventImpl(Window.java:2489)
at java.awt.Component.dispatchEvent(Component.java:4488)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:668)
at …
Run Code Online (Sandbox Code Playgroud) 我正在尝试从jar文件中访问资源.资源位于jar的同一目录中.
my-dir:
tester.jar
test.jpg
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的东西,包括以下内容,但每次输入流为空时:
[1]
String path = new File(".").getAbsolutePath();
InputStream inputStream = this.getClass().getResourceAsStream(path.replace("\\.", "\\") + "test.jpg");
Run Code Online (Sandbox Code Playgroud)
[2]
File f = new File(this.getClass().getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
InputStream inputStream = this.getClass().getResourceAsStream(f.getParent() + "test.jpg");
Run Code Online (Sandbox Code Playgroud)
你能给我一些提示吗?谢谢.
我整天都在努力解决这个问题而且没有成功.我基本上试图从另一个apk获取图像资源.
因此,如果com.example.app在res文件夹中有一个名为image1.png的图像,我希望com.example2.app能够访问该资源并将其放在imageview中.
我知道你必须使用PackageManager.getResourcesForApplication,但我仍然没有成功获得实际资源.
任何帮助都是极好的!
我有一个程序,getClass().getClassLoader().getResource()
用于获取目录的URL,它在eclipse中工作正常,但在jared之后,它返回null.
根据这个网址:http: //www.coderanch.com/t/385935/java/java/getResource-path-fails-Jar
问题的结果是因为jar中不存在路径本身.存在路径的文件,但不存在路径本身.我在Eclipse中使用"Runnable JAR File"导出命令.当我尝试使用旧的导出"Jar文件"来创建jar时,我注意到" 添加目录条目 " 的复选框,这就是解决方案.Jar文件在jar中需要自己的目录条目,getResource()返回路径的URL.
但是在maven中,我无法在打包时找到"添加目录条目"的命令,有人可以给我一个提示吗?非常感谢 !
环境:eclipse 3.5,m2eclipse,maven 2.2.1
我试图填补Spinner
与一些价值Strings
的string.xml
.我想这样做:
final List<String> list = new ArrayList<String>();
for (int i = 0; i < 86; i++) {
String resource = "R.string." + ntpServers[i][0];
list.add(getResources().getString(resource));
}
Run Code Online (Sandbox Code Playgroud)
我有类似下一个的字符串.
<string name="AT">Austria</string>
<string name="BY">Belarus</string>
<string name="BE">Belgium</string>
Run Code Online (Sandbox Code Playgroud)
而从地理编码,我得到像AT,BY,等存储这些ntpServers阵列中的国家代码.我想用相应的字符串中保存的名称填充微调器,但我不能这样做,getResources().getString(resource)
因为resource
它String
不是一个int
.
我怎么解决这个问题?
谢谢你的建议.
PD:
我得到了下一个序列:
例如:
geocoder.getCountry() = ES --> ntpServers[36][0] = ES --> R.string.ES = """Spain"""
Run Code Online (Sandbox Code Playgroud)
我想在微调器中使用哪个字符串.
_ __ _ __ _ __ _ _ _ _ _ _ _ _ …
我在Eclipse(windows)中使用java,我正在尝试使用:
myClass.getResource("/image.jpg"),
Run Code Online (Sandbox Code Playgroud)
而image.jpg存在于root loacation"myProject /"中.它返回null.
我检查了很多其他线程,但没有一个解决了我的问题.
所以我试着评估一下:
this.getClass().getResource("/").getPath();
Run Code Online (Sandbox Code Playgroud)
它返回"myProject/build/classes".
所以我检查了这个目录的项目配置,并找到了完全相同的目录
Java构建路径 - >源 - >默认输出文件夹
我的问题是:
为什么我的资源的默认目录是输出文件夹?
如上所述,我想从另一个文件夹中获取资源,但尝试调用"/../"不起作用...如何加载其他未嵌套在我的类dir中的资源?(我可以改变我的输出目录,但我认为它会非常难看......)
我没有长时间使用java,所以我不确定还有什么要寻找的.我希望有人可以指出我正确的方向.
目标: 我想使用查找表,存储为文本文件.但我不想使用绝对路径,因为最后我想打包一个版本并能够从任何位置调用它(文本文件将包含在打包版本中).
当前设置: 我将文本文件放在一个名为"resources"的文件夹中(因为从阅读有关java的教程,我得到了印象,这是我应该把它用来维护一个更好的结构化项目).
在根包文件夹中,我有一个类(MainClass.java),它在子包中调用另一个类(LookUpClass.java).文件夹设置如下:
我写了一个方法LookUpClass.java
,就是从资源中的查找表中检索某一行.为了检索文件并读出某一行,我用了
// Gets respective line from LUT
private static String getLineFromLUT(int line) {
URL url = LookUpClass.class.getClass().getResource("/LookUpTables/LookUpTable1.txt");
File file = new File(url.toURI());
BufferedReader br = new BufferedReader(new FileReader(file));
for (int i = 0; i < line; ++i)
br.readLine();
return br.readLine;
}
Run Code Online (Sandbox Code Playgroud)
在我的项目结构中,"java"文件夹被标记为"source",而"resources"被标记为"resources".
我的测试设置非常简单:
public static void main(String[] args) throws URISyntaxException, IOException {
String c = LookUpClass.getLineFromLUT(5);
System.out.println("Color of line 5: " …
Run Code Online (Sandbox Code Playgroud) 我有一些需要我的程序读取的文本配置文件.我目前的代码是:
protected File getConfigFile() {
URL url = getClass().getResource("wof.txt");
return new File(url.getFile().replaceAll("%20", " "));
}
Run Code Online (Sandbox Code Playgroud)
当我在eclipse中本地运行它时,这可以工作,尽管我必须做那个hack来处理路径名中的空间.配置文件与上述方法位于同一个包中.但是,当我将应用程序导出为jar时,我遇到了问题.jar存在于共享的映射网络驱动器Z:上.当我从命令行运行应用程序时,我收到此错误:
java.io.FileNotFoundException:file:\ Z:\ apps\jar\apps.jar!\ vp\fsm\configs\wof.txt
我怎样才能使这个工作?我只想告诉java读取与当前类相同的目录中的文件.
谢谢,约拿
Sonar在我们的Java项目中指出了这个错误.欢迎任何安全编程的建议!
URL url = getClass().getResource("/myWonderfulResource.txt");
if (url == null) {
throw new IllegalStateException("File not found: /myWonderfulResource.txt");
}
Run Code Online (Sandbox Code Playgroud) 我最近升级到 JDK 9 并且 Eclipse 抱怨sun.misc.Launcher
无法导入。好像sun.misc.Launcher
是不安全的。我正在寻找替代方法来替换我项目中的这行代码。
final URL url = Launcher.class.getResource("/");
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激。
更新:上述代码块的更完整版本是:
final URL url = Launcher.class.getResource("/");
final File fs = new File(url.toURI());
for (File f : fs.listFiles()) {
System.out.println(f.getAbsolutePath());
}
Run Code Online (Sandbox Code Playgroud)
这是src
在 IDE 中启动程序时打印文件夹中的所有文件。
getresource ×10
java ×9
android ×2
jar ×2
classloader ×1
classpath ×1
eclipse ×1
getstring ×1
inputstream ×1
java-9 ×1
packages ×1
sonarqube ×1
string ×1
unsafe ×1
url ×1