标签: embedded-resource

加载图片资源

我的GUI出错了.尝试设置标题栏图标,然后将其包含在Runnable JAR中.

BufferedImage image = null;
try {
    image = ImageIO.read(getClass().getClassLoader().getResource("resources/icon.gif"));
} 
catch (IOException e) {
    e.printStackTrace();
}

frame.setIconImage(image);
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

Exception in thread "main" java.lang.IllegalArgumentException: input == null!
    at javax.imageio.ImageIO.read(Unknown Source)
    at GUI.<init>(GUI.java:39)
    at GUI.main(GUI.java:351)
Run Code Online (Sandbox Code Playgroud)

图像位于正确的目录中,"resources"文件夹是项目文件的根目录

java swing awt nullpointerexception embedded-resource

54
推荐指数
3
解决办法
6万
查看次数

使用GCC在可执行文件中嵌入资源

我正在寻找一种方法来轻松地将任何外部二进制数据嵌入到由GCC编译的C/C++应用程序中.

我想做的一个很好的例子就是处理着色器代码 - 我可以把它保存在源文件中,const char* shader = "source here";但这是非常不切实际的.

我希望编译器为我做:在编译(链接阶段)时,读取文件"foo.bar"并将其内容链接到我的程序,以便我能够从内容中访问内容作为二进制数据码.

对于我想作为单个.exe文件分发的小型应用程序可能很有用.

GCC是否支持这样的事情?

c c++ resources gcc embedded-resource

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

如何从嵌入式资源中提取文件并将其保存到磁盘?

我正在尝试使用CSharpCodeProvider编译下面的代码.该文件已成功编译,但是当我单击生成的EXE文件时,我收到错误(Windows正在搜索此问题的解决方案)并且没有任何反应.

当我使用CSharpCodeProvider编译下面的代码时,我MySql.Data.dll使用以下代码行添加了作为嵌入式资源文件:

if (provider.Supports(GeneratorSupport.Resources))
    cp.EmbeddedResources.Add("MySql.Data.dll");
Run Code Online (Sandbox Code Playgroud)

该文件已成功嵌入(因为我注意到文件大小增加).

在下面的代码中,我尝试提取嵌入的DLL文件并将其保存到System32,但下面的代码由于某种原因不起作用.

namespace ConsoleApplication1
{
    class Program
    {
        public static void ExtractSaveResource(String filename, String location)
        {
            //Assembly assembly = Assembly.GetExecutingAssembly();
            Assembly a = .Assembly.GetExecutingAssembly();
            //Stream stream = assembly.GetManifestResourceStream("Installer.Properties.mydll.dll"); // or whatever
            //string my_namespace = a.GetName().Name.ToString();
            Stream resFilestream = a.GetManifestResourceStream(filename);
            if (resFilestream != null)
            {
                BinaryReader br = new BinaryReader(resFilestream);
                FileStream fs = new FileStream(location, FileMode.Create); // Say
                BinaryWriter bw = new BinaryWriter(fs);
                byte[] ba = new byte[resFilestream.Length];
                resFilestream.Read(ba, 0, ba.Length);
                bw.Write(ba);
                br.Close();
                bw.Close(); …
Run Code Online (Sandbox Code Playgroud)

.net c# embedded-resource csharpcodeprovider

48
推荐指数
3
解决办法
7万
查看次数

我可以将普通文件链接到我的可执行文件吗?

一些框架(Qt,Windows,Gtk ...)提供了向二进制文件添加资源的功能.我想知道是否有可能在没有框架的情况下实现这一点,因为所有真正需要的是

  1. 包含二进制(数据段)内资源地址的符号
  2. 表示资源长度的符号
  3. 资源本身

如何使用gcc工具链实现这一目标?

c c++ linker gcc embedded-resource

46
推荐指数
2
解决办法
1692
查看次数

如何将图像添加到JButton

我正在尝试将图像添加到JButton,我不确定我缺少什么.当我运行以下代码时,该按钮看起来与我创建它时没有任何图像属性完全相同.Water.bmp位于我的项目文件夹的根目录中.

ImageIcon water = new ImageIcon("water.bmp");
    JButton button = new JButton(water);
    frame.add(button);
Run Code Online (Sandbox Code Playgroud)

java icons swing jbutton embedded-resource

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

Java Swing:在Jar中显示图像

从eclipse运行Java应用程序时,我的ImageIcon显示得很好.

但是在创建了一个jar之后,图像的路径显然被搞砸了.

有没有办法在运行时从jar中提取图像,以便我可以打开它?或者,有更好的方法吗?

如果可能的话,我想分发一个jar文件.

java swing embedded-resource imageicon

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

通过getClass()加载文件.getResource()

我已经按照加载资源文件的方式使用了getClass.getResource(path).代码片段在这里:

String url = "Test.properties";

System.out.println("Before printing paths..");
System.out.println("Path2: "+ getClass().getResource(url).getPath());

FileInputStream inputStream = new FileInputStream(new File(getClass().getResource(url).toURI()));
i_propConfig.load(inputStream);
inputStream.close();
Run Code Online (Sandbox Code Playgroud)

我已经在eclipse中使用层次结构配置它(在源代码下有一个名为SwingDemo的文件夹.在SwingDemo中有我的java文件以及资源文件)...

  1. SRC
    • SwingDemo
      1. CustomDialog.java
      2. Test.properties

当我在日食上运行时,一切运行正常.但是一旦我尝试从cmd行运行应用程序,就会出现空指针异常.

命令行部署层次结构如下:

文件夹: D:\Work\Java Progrms\SwingDemo

层次:

  1. SwingDemo
    • CustomDialog.java
    • Test.properties

首先,我SwingDemo从命令行(javac CustomDialog.java)在文件夹中编译了这个文件.然后我将一步回到Java Programs文件夹(正如我在.java类中提到的那样)并使用着名的程序运行应用程序

java SwingDemo.CustomDialog
Run Code Online (Sandbox Code Playgroud)

我之前使用新的FileInputStream("path")时,我曾经遵循类似的步骤.做这种方式后我得到空指针异常..

我认为getClass().getResource(url)无法从特定目录加载文件.这就是我将资源放在与我的java文件相同的目录中的原因.它在Eclipse中运行良好.但是当我从命令行运行时,为什么这会出错.

java load file embedded-resource

42
推荐指数
2
解决办法
14万
查看次数

显示嵌入在DLL文件中的.RDLC报告

我有一个由Windows服务和表单应用程序使用的报告.所以,我想把报告嵌入一个可供两者使用的DLL文件中.

问题是,如果我尝试在我的Windows窗体应用程序中设置ReportViewer控件的ReportEmbeddedResource属性,它将在Windows窗体应用程序中搜索资源,而不是dll文件.

例如:来自Windows窗体应用程序的代码:

rv.LocalReport.ReportEmbeddedResource = "MyReportInMyDLLFile.rdlc"
Run Code Online (Sandbox Code Playgroud)

如何让上面的命令查找我的DLL文件中的嵌入式资源?

rdlc embedded-resource reporting-services

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

使用自定义VirtualPathProvider加载嵌入式资源部分视图

我编写了自定义VirtualFile和VirtualPathProvider实现,这些实现成功获取了部分视图的嵌入式资源.

但是,当我尝试渲染它们时会产生此错误:

The view at '~/Succeed.Web/Succeed.Web.Controls.SImporter._SImporter.cshtml' must derive from WebViewPage, or WebViewPage<TModel>.

渲染局部视图时,在常规视图内部,它看起来如下所示:

Html.RenderPartial("~/Succeed.Web/Succeed.Web.Controls.SImporter._SImporter.cshtml");
Run Code Online (Sandbox Code Playgroud)

是什么让它相信这不是局部观点?

编辑:我为虚拟文件和虚拟文件提供程序实现发布了我的代码,任何人偶然发现这个寻找解决方案来获得该组件的工作.这个问题也适用于基于问题标题的人.

ere是VirtualFile实现以供参考:

public class SVirtualFile : VirtualFile
{
    private string m_path;

    public SVirtualFile(string virtualPath)
        : base(virtualPath)
    {
        m_path = VirtualPathUtility.ToAppRelative(virtualPath);
    }

    public override System.IO.Stream Open()
    {
        var parts = m_path.Split('/');
        var assemblyName = parts[1];
        var resourceName = parts[2];

        assemblyName = Path.Combine(HttpRuntime.BinDirectory, assemblyName);
        var assembly = System.Reflection.Assembly.LoadFile(assemblyName + ".dll");

        if (assembly != null)
        {
            return assembly.GetManifestResourceStream(resourceName);
        }
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

的VirtualPathProvider:

public class SVirtualPathProvider : …
Run Code Online (Sandbox Code Playgroud)

virtualpathprovider partial-views embedded-resource asp.net-mvc-3

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

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万
查看次数