标签: getresource

Class.getResource()返回null

我试图在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)

java getresource

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

从jar访问jar外部的资源

我正在尝试从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)

你能给我一些提示吗?谢谢.

java inputstream getresource

9
推荐指数
1
解决办法
7026
查看次数

从另一个apk获取资源

我整天都在努力解决这个问题而且没有成功.我基本上试图从另一个apk获取图像资源.

因此,如果com.example.app在res文件夹中有一个名为image1.png的图像,我希望com.example2.app能够访问该资源并将其放在imageview中.

我知道你必须使用PackageManager.getResourcesForApplication,但我仍然没有成功获得实际资源.

任何帮助都是极好的!

java eclipse android package-managers getresource

8
推荐指数
1
解决办法
8074
查看次数

如何在打包时使maven"添加目录条目"?

我有一个程序,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

java jar getresource

7
推荐指数
1
解决办法
3220
查看次数

我不能动态地执行getResources.getString吗?

我试图填补Spinner与一些价值Stringsstring.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)因为resourceString不是一个int.

我怎么解决这个问题?

谢谢你的建议.

PD:

我得到了下一个序列:

例如:

geocoder.getCountry() = ES --> ntpServers[36][0] = ES --> R.string.ES = """Spain""" 
Run Code Online (Sandbox Code Playgroud)

我想在微调器中使用哪个字符串.

_ __ _ __ _ __ _ _ _ _ _ _ _ _ …

string android getstring getresource

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

为class.getResource()定义根类路径

我在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构建路径 - >源 - >默认输出文件夹

我的问题是:

  1. 为什么我的资源的默认目录是输出文件夹?

  2. 如上所述,我想从另一个文件夹中获取资源,但尝试调用"/../"不起作用...如何加载其他未嵌套在我的类dir中的资源?(我可以改变我的输出目录,但我认为它会非常难看......)

java classpath classloader getresource

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

检索子包类的资源

我没有长时间使用java,所以我不确定还有什么要寻找的.我希望有人可以指出我正确的方向.

目标: 我想使用查找表,存储为文本文件.但我不想使用绝对路径,因为最后我想打包一个版本并能够从任何位置调用它(文本文件将包含在打包版本中).

当前设置: 我将文本文件放在一个名为"resources"的文件夹中(因为从阅读有关java的教程,我得到了印象,这是我应该把它用来维护一个更好的结构化项目).

在根包文件夹中,我有一个类(MainClass.java),它在子包中调用另一个类(LookUpClass.java).文件夹设置如下:

  • SRC
    • java的
      • main.package.com
        • 分装
          • LookUpClass.java
          • PlotterClass.java
        • MainClass.java
    • 资源
      • 查找表
        • LookUpTable1.txt
        • LookUpTable2.txt

我写了一个方法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)

java packages directory-structure getresource

7
推荐指数
1
解决办法
1683
查看次数

使用相对路径在JAR中读取文件

我有一些需要我的程序读取的文本配置文件.我目前的代码是:

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读取与当前类相同的目录中的文件.

谢谢,约拿

java jar getresource

6
推荐指数
1
解决办法
2万
查看次数

Sonar标志"糟糕的做法":如果扩展类,在XYZ中使用GetResource可能是不安全的

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)

java url unsafe getresource sonarqube

6
推荐指数
1
解决办法
2472
查看次数

JDK 9 不安全导入 sun.misc.Launcher

我最近升级到 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 中启动程序时打印文件夹中的所有文件。

java getresource java-9

6
推荐指数
1
解决办法
1260
查看次数