Jose E. Hernandez
Jose E. Hernandez

Reputation: 41

How to create executable file in Java using Netbeans

I made a cache simulator program for a homework, I decided to use java. I want to create an executable jar file that will work on any system, but the problem is that my program gathers data from an external text file. How can I include that text file inside the jar so that there won't be any problem when executing file? By the way, I am using NetBeans IDE.

Upvotes: 0

Views: 913

Answers (3)

kamoor
kamoor

Reputation: 2939

You can keep any file in classpath and read as class path resource. Sample code is given below.

InputStream in = this.getClass().getClassLoader().getResourceAsStream("yourinputFile.txt");

Your jar will be class path, that means you can keep your file in root folder of java source which will get added to jar file while building it.

Upvotes: 0

Sectona
Sectona

Reputation: 98

Yes and I said Yes. To really make your jarfiles along with the text files. Please ensure that links to the folder on which the text files is where properly coded and well linked. The three Examplary Method below should get you working irrespective of any IDEs. Please rate this and give me a shout if you still need further help.......Sectona

Method 1

Step 1:- Locate your folder that contain your java file by using cd command.

Step 2:- Once your enter your folder location then view your java file by dir command.

Step 3:- Compile your java file using javac file.java

Step 4:- view class file by type dir command.

Step 5:- Now you want to create a manifest file.

I)Go to folder<br>
II)Right-click->New->Text Document
III)open text document. Type main class name ,
     Main-Class: main-class-name
IV)Save this file your wish like MyManifest.txt 

Step 6:- To create executable jar file type

  jar cfm JarFileName.jar MyManifest.txt JavaFike1.class JavaFile2.class

Step 7:- Now you see the Executable jar file on your folder. Click the file to Run.

Step 8:- To run this file via command prompt then type java -jar JarFileName.jar

Step 9:- You done this..........Sectona

Method 2

The basic format of the command for creating a JAR file is:

jar cf jar-file input-file(s)

The options and arguments used in this command are:

  • The c option indicates that you want to create a JAR file.
  • The f option indicates that you want the output to go to a file rather than to stdout.
  • jar-file is the name that you want the resulting JAR file to have. You can use any filename for a JAR file. By convention, JAR filenames are given a .jar extension, though this is not required.
  • The input-file(s) argument is a space-separated list of one or more files that you want to include in your JAR file. The input-file(s) argument can contain the wildcard * symbol. If any of the "input-files" are directories, the contents of those directories are added to the JAR archive recursively.

Method 3

import java.io.*;
import java.util.jar.*;

public class CreateJar {
  public static int buffer = 10240;
  protected void createJarArchive(File jarFile, File[] listFiles) {
    try {
      byte b[] = new byte[buffer];
      FileOutputStream fout = new FileOutputStream(jarFile);
      JarOutputStream out = new JarOutputStream(fout, new Manifest());
      for (int i = 0; i < listFiles.length; i++) {
        if (listFiles[i] == null || !listFiles[i].exists()|| listFiles[i].isDirectory())
      System.out.println();
        JarEntry addFiles = new JarEntry(listFiles[i].getName());
        addFiles.setTime(listFiles[i].lastModified());
        out.putNextEntry(addFiles);

        FileInputStream fin = new FileInputStream(listFiles[i]);
        while (true) {
          int len = fin.read(b, 0, b.length);
          if (len <= 0)
            break;
          out.write(b, 0, len);
        }
        fin.close();
      }
      out.close();
      fout.close();
      System.out.println("Jar File is created successfully.");
    } catch (Exception ex) {}
  }
  public static void main(String[]args){
    CreateJar jar=new CreateJar();
    File folder = new File("C://Answers//Examples.txt");
      File[] files = folder.listFiles();
    File file=new File("C://Answers//Examples//Examples.jar");
    jar.createJarArchive(file, files);
  }
} 

Upvotes: 0

MadProgrammer
MadProgrammer

Reputation: 347274

If you don't need to write to the file, copy into the src directory. You will no longer be able to access like a File, but instead will need to use Class#getResource, passing it the path from the top of the source tree to where the file is stored.

For example, if you put it in src/data, then you'd need to use getClass().getResource("/data/..."), passing it what ever name the file is...

Clean and build...

Upvotes: 2

Related Questions