【问题标题】:In netbeans, how to save or access an image after deploying jar file在netbeans中,部署jar文件后如何保存或访问图像
【发布时间】:2015-08-10 11:35:40
【问题描述】:

我正在尝试使用 NetBeans 在 Java 中制作一个混乱管理应用程序。我想将成员的图像保存在我的src 目录中的指定文件夹中。我刚刚创建了名为 EmpImgs 的文件夹来存储员工图像。这是我的代码:

File srcDir = new File(file);    // current path of image     
File dstDir = new File("src\\J_Mess_Mgnt\\EmpImgs\\"+Txt_C_G_M_M_ID.getText());
objm.copyFile(srcDir, dstDir);`  // copy image from srcDir to dstDir 

这里我使用另一个类将图像复制到预定义的文件夹并根据它们的 ID 重命名图像。

在 Java IDE 中一切正常。

但不幸的是,在制作了可执行的 .jar 文件后,此代码将无法工作。我无法保存或访问该目录中的任何图像文件。

我刚刚浏览了这个网站,但没有找到合适的答案。

我只需要在 jar 文件夹中保存和编辑图像

【问题讨论】:

标签: java netbeans


【解决方案1】:

嘿嘿嘿,伙计,你需要一些帮助。这是重复的,但我会让你放松一下,也许你应该稍后删除它。所以回到基础,jvm 运行字节码,你可以从将 java 源代码编译为 .class 文件中获得。现在这与 C 和 C++ 不同,如果你只是得到一个 .exe。您不想在所有这些文件夹中为您的用户提供一堆 .class 文件,他们可以编辑这些文件并且必须在命令行上运行命令,而是给他们所谓的“存档”,它只是一个不可变的文件结构,因此他们不能搞砸应用程序,在 java 中称为 jar。他们只需双击归档文件(这是一个jar),jvm将调用MetaInf目录中指定的main方法(只是关于jar的一些信息,与其他编程语言中的清单相同)。

现在请记住,您的应用程序现在是一个 jar!它是不可变的!因为我解释的原因。你不能再在那里保存数据了!您的程序仍然可以在命令行和 IDE 中运行,因为它的工作方式就像您使用的应用程序被分发为带有 .class 文件的一堆文件夹一样,您可以写入此位置。

如果您想将资源打包到您的应用程序中,您需要使用流(google it)。但要记住!然后你不能将更多的资源保存到 jar 中!你需要写别的地方!也许使用 user.home 目录!或从类路径中指定的位置,照片将就在罐子旁边!有时您可能需要为您的 java 应用程序安装一个安装程序,但如果您不需要,通常您不想创建额外的工作。

【讨论】:

  • 谢谢先生,感谢您给我这些宝贵的信息。我认为最好在jar文件夹之外创建一个文件夹。使用一些命令,对。让我试试。任何对我的主题有额外想法或知识或信息的人请给我一个简短的,提前谢谢,
  • 别担心,我不知道学习所有这些东西的最好方法是什么,我想它有点像经验,所以如果你坚持下去,你就会学会它。我首先建议在进行一般性学习(例如遵循这些教程newthinktank.com/videos/java-video-tutorial)和寻找问题的具体答案之间找到平衡点,因为您通常不知道正确的问题是何时开始。
  • 好的先生。我不是一个有经验的人。所以我希望您对我的问题给予真诚的帮助和建议。,问候,,
【解决方案2】:

最后我找到了适合我的问题的答案。无法将图像或文件复制到执行 jar 文件夹。所以我使用了不同的想法。创建一些文件夹(根据我们的要求),我的可执行 jar 在哪里文件夹位于(无论哪个驱动器或位置在哪里)。代码是..

String PRJT_PATH="";          //variable to store path of working directory.

private void getdire() throws IOException{
    File f=new File(".");
    File[] f1=f.listFiles();
    PRJT_PATH=f.getCanonicalPath();  //get path details.for eg:-E:/java/dist

}
private void new_Doc_folder(){  //function for creating new folders
try{
    String strManyDirectories="Docs"+File.separator+"Bil_Img";   //i need to  create 2 folders,1st a folder namedDocs and In Docs folder another folder named Bil_Img 

   String SubDirectories="Docs"+File.separator+"EmpImgs";  //same as above but keep in mind that It will not create a Same folder again if already exists,
    // Create one directory

    boolean success = (new File(strManyDirectories)).mkdirs(); //create more than one directory
    boolean success1 = (new File(SubDirectories)).mkdir();    //Creates a single directory
        if (success && success1) {
        }    

}catch (Exception e){//Catch exception if any
  System.err.println("Error: " + e.getMessage());
}

成功了。

注册

【讨论】:

    猜你喜欢
    • 2012-12-15
    • 2013-03-13
    • 2011-08-07
    • 1970-01-01
    • 2014-02-06
    • 1970-01-01
    • 2013-05-03
    • 2011-06-06
    • 2011-01-23
    相关资源
    最近更新 更多