Jump to content
gabefgonc

Nao consigo criar jar na IntelliJ idea

Recommended Posts

Olá, quando tento fazer um jar com os códigos a seguir, e abro o executável, ele lança a seguinte exceção:

java.io.FileNotFoundException: res/world/world1.txt (Arquivo ou diretório inexistente)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:219)
at java.base/java.io.FileInputStream.(FileInputStream.java:157)
at java.base/java.io.FileInputStream.(FileInputStream.java:112)
at java.base/java.io.FileReader.(FileReader.java:60)
at br.gabefgonc.javaxswingtests.utils.Utils.loadFileAsString(Utils.java:13)
at br.gabefgonc.javaxswingtests.worlds.World.loadWorld(World.java:68)
at br.gabefgonc.javaxswingtests.worlds.World.(World.java:25)
at br.gabefgonc.javaxswingtests.main.states.GameState.(GameState.java:20)
at br.gabefgonc.javaxswingtests.main.Game.init(Game.java:95)
at br.gabefgonc.javaxswingtests.main.Game.run(Game.java:45)
at java.base/java.lang.Thread.run(Thread.java:834)

java.lang.NumberFormatException: For input string: “”
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.base/java.lang.Integer.parseInt(Integer.java:662)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at br.gabefgonc.javaxswingtests.utils.Utils.parseInt(Utils.java:26)
at br.gabefgonc.javaxswingtests.worlds.World.loadWorld(World.java:71)
at br.gabefgonc.javaxswingtests.worlds.World.(World.java:25)
at br.gabefgonc.javaxswingtests.main.states.GameState.(GameState.java:20)
at br.gabefgonc.javaxswingtests.main.Game.init(Game.java:95)
at br.gabefgonc.javaxswingtests.main.Game.run(Game.java:45)
at java.base/java.lang.Thread.run(Thread.java:834)
Exception in thread “Thread-0” java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
at br.gabefgonc.javaxswingtests.worlds.World.loadWorld(World.java:72)
at br.gabefgonc.javaxswingtests.worlds.World.(World.java:25)
at br.gabefgonc.javaxswingtests.main.states.GameState.(GameState.java:20)
at br.gabefgonc.javaxswingtests.main.Game.init(Game.java:95)
at br.gabefgonc.javaxswingtests.main.Game.run(Game.java:45)
at java.base/java.lang.Thread.run(Thread.java:834)

códigos:

World.java:

package br.gabefgonc.javaxswingtests.worlds;

import br.gabefgonc.javaxswingtests.entities.EntityManager;
import br.gabefgonc.javaxswingtests.entities.Player;
import br.gabefgonc.javaxswingtests.entities.Tree;
import br.gabefgonc.javaxswingtests.inventory.Inventory;
import br.gabefgonc.javaxswingtests.items.Item;
import br.gabefgonc.javaxswingtests.items.ItemManager;
import br.gabefgonc.javaxswingtests.main.Game;
import br.gabefgonc.javaxswingtests.main.Handler;
import br.gabefgonc.javaxswingtests.main.tiles.Tile;
import br.gabefgonc.javaxswingtests.utils.Utils;

import java.awt.*;

public class World {
private int width, height, spawnX,spawnY;
private int[][] tiles;
private Handler handler;
private EntityManager entityManager;
private ItemManager itemManager;
public World(Handler handler, String path){
this.handler = handler;
entityManager = new EntityManager(handler, new Player(handler, 0, 0));
loadWorld(path);
entityManager.getPlayer().setX(spawnX);
entityManager.getPlayer().setY(spawnY);

    itemManager = new ItemManager(this.handler);



}

public void tick(){
    entityManager.tick();
    itemManager.tick();
}

public void render(Graphics g){
    int xStart = (int) Math.max(0, handler.getCamera().getxOffset() / Tile.TILE_WIDTH);
    int xEnd = (int) Math.min(width, (handler.getCamera().getxOffset() + handler.getWidth()) / Tile.TILE_WIDTH + 1);
    int yStart = (int) Math.max(0, handler.getCamera().getyOffset() / Tile.TILE_HEIGHT);
    int yEnd = (int) Math.min(height, (handler.getCamera().getyOffset() + handler.getHeight()) / Tile.TILE_HEIGHT + 1);
    for(int y = yStart; y < yEnd; y++){
        for(int x = xStart; x < xEnd; x++){
            getTile(x, y).render(g, (int) (x * Tile.TILE_WIDTH - handler.getCamera().getxOffset()),
                    (int) (y * Tile.TILE_HEIGHT - handler.getCamera().getyOffset()));
        }
    }
    itemManager.render(g);
    entityManager.render(g);
}

public Tile getTile(int x, int y){
    Tile t;
    if(x < width && y < height)
         t = Tile.tiles[tiles[x][y]];
    else t = null;

    if(t == null){
        return Tile.grassTile;
    }
    return t;
}

private void loadWorld(String path){
    String file = Utils.loadFileAsString(path);
    String[] tokens = file.split("\\s+");
    System.out.println(tokens[0]);
    width = Utils.parseInt(tokens[0]);
    height = Utils.parseInt(tokens[1]);
    spawnX = Utils.parseInt(tokens[2]);
    spawnY = Utils.parseInt(tokens[3]);
    tiles = new int[width][height];
    for(int y = 0; y < height; y++){
        for(int x = 0; x < width; x++){
            tiles[x][y] = Utils.parseInt(tokens[(x + y * width) + 4]);
            if(Utils.parseInt(tokens[(x + y * width) + 4]) == 5){
                entityManager.addEntity(new Tree(handler, x * Tile.TILE_WIDTH, y * Tile.TILE_HEIGHT));
            }
        }
    }

}

public int getWidth() {
    return width;
}

public int getHeight() {
    return height;
}

public EntityManager getEntityManager(){
    return entityManager;
}

public Handler getHandler() {
    return handler;
}

public void setHandler(Handler handler) {
    this.handler = handler;
}

public ItemManager getItemManager() {
    return itemManager;
}

public void setItemManager(ItemManager itemManager) {
    this.itemManager = itemManager;
}

}

Utils.java:

package br.gabefgonc.javaxswingtests.utils;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Utils {

public static String loadFileAsString(String path){
    StringBuilder builder = new StringBuilder();
    ClassLoader classLoader = ClassLoader.getSystemClassLoader();
    try {
        BufferedReader br = new BufferedReader(new FileReader(path));
        String line;
        while((line = br.readLine()) != null){
            builder.append(line + "\n");
        }
    }catch(IOException e){
        e.printStackTrace();
    }
    return builder.toString();
}

public static int parseInt(String number){
    try{
        return Integer.parseInt(number);
    }catch(NumberFormatException e){
        e.printStackTrace();
        return 0;
    }
}

}

GameState.java:

package br.gabefgonc.javaxswingtests.main.states;

import br.gabefgonc.javaxswingtests.entities.EntityManager;
import br.gabefgonc.javaxswingtests.entities.Player;
import br.gabefgonc.javaxswingtests.entities.Tree;
import br.gabefgonc.javaxswingtests.gfx.ImageLoader;
import br.gabefgonc.javaxswingtests.gfx.SpriteSheet;
import br.gabefgonc.javaxswingtests.main.Game;
import br.gabefgonc.javaxswingtests.main.Handler;
import br.gabefgonc.javaxswingtests.main.tiles.Tile;
import br.gabefgonc.javaxswingtests.worlds.World;

import java.awt.*;

public class GameState extends State {
private World world;

public GameState(Handler handler){
    super(handler);
    world = new World(handler, "res/world/world1.txt");
    handler.setWorld(world);
}

public void tick() {
    world.tick();
}

public void render(Graphics g) {
    world.render(g);
}

}

classPath:

/home/gabriel/Programacao/Games/JavaxSwingTests/res

Obrigado!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Fernando Rafael
      Bom dia, estou baixando arquivos que estão em uma hospedagem própria para serem acessados por um aplicativo que estou desenvolvendo (consigo fazer normalmente utilizando os comandos citado mais a baixo), porém os arquivos ficam salvos na pasta padrão de DOWNLOADS do Android, minha intenção não é ficar acumulando estes arquivos no aparelho, ou esperar que o usuário exclua manualmente, gostaria em salva-los em uma pasta interna do aplicativo para que seja possível excluir automaticamente pelo próprio aplicativo, já tentei como alternativa excluir esses arquivos da pasta DOWNLOADS, mas não consegui...
       
      Segue o código que estou usando para baixar os arquivos, queria adaptar para baixar direto na pasta interna do aplicativo, ou como alternativa caso isso não seja possível, conseguir excluir esses arquivos da pasta DOWNLOADS do Android...
       
      String url = "https://www.site.com/arquivo.pdf"; //Arquivo que vou baixar DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); request.setDescription("Alguma descrição"); request.setTitle("Algum titulo"); //A notificação de conslusão só esta disponível a partir da API 11 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { request.allowScanningByMediaScanner(); request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); } //Salvando o arquivo no diretório de Downloads request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "arquivo.pdf"); DownloadManager manager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); manager.enqueue(request);  
    • By Fernando Rafael
      Bom dia, alguém poderia me ajudar com esse problema? 
       
      Estou fazendo um aplicativo bem simples em que sua única função será criar uma pasta no celular (em local acessível pelo gerenciador de arquivos do usuário), e posteriormente copiar arquivos de outro local ou rede e colocar nesta pasta.
       
      Fiz algumas pesquisas, mas por incrível que pareça não encontrei algo que tenha funcionando. Também tenho dúvidas sobre qual seria o equivalente ao "C:/" do Android.
    • By Felgob
      O que as empresas mais esperam de um desenvolvedor Java que tem o nível júnior?
    • By nelson99
      Bom dia estou com o seguinte erro que não consigo resolver, estou tentando inserir uma parte de código html com js, no meu Html, através do appendChild, mas esta dando erro, o seguinte erro: Null is not an Object ( Evaluation 'DOM.transacaoContainer.appendChild(tr) )
       
      ja tentei colocando this.transacaoContainer.appendChild(tr);
      ja tentei colocar usando o insertBefore e nada. sempre o mesmo erro
       
      aqui esta o código :
       
       
       
       
      const DOM = {
                 
                  transacaoContainer: document.querySelector('.mytbody'),
       
                  addTransaction(transaction, index){
       
               
                  const tr = document.createElement('tr');
                  tr.innerHTML = DOM.innerHTMLtransaction(transaction);
                  DOM.transacaoContainer.appendChild(tr);
       
                      
       
              },
       
    • By Adriano Costa
      Bom dia amigos, sou novo na programação e estou aprendendo a gerar QRCode e BarCode, eu assistindo um vídeo gringo fiz um programa idêntico, mas o meu não esta funcionando, não apresenta erro no código, mas não gera os códigos. Estou usando as bibliotecas externas core 3.4.1 e a javase 3.4.1.
       
      package demo;
      //import java.awt.BorderLayout;
      import java.awt.EventQueue;
      import javax.swing.JFrame;
      import javax.swing.JPanel;
      import javax.swing.border.EmptyBorder;
      import javax.swing.JTextField;
      import javax.swing.ImageIcon;
      import javax.swing.JButton;
      import javax.swing.JLabel;
      import javax.swing.JOptionPane;
      import javax.swing.border.LineBorder;
      import helpers.ZXingHelper;
      import java.awt.Color;
      import java.awt.event.ActionListener;
      import java.awt.event.ActionEvent;
      public class JFrameMain extends JFrame {
          
          /**
           * 
           */
          private static final long serialVersionUID = 1L;
          private JPanel contentPane;
          private JTextField textFieldProductId;
          //private JButton ButtonQRCode;
          //private JButton ButtonBarCode;
          private JLabel labelImage;
          /**
           * Launch the application.
           */
          public static void main(String[] args) {
              EventQueue.invokeLater(new Runnable() {
                  public void run() {
                      try {
                          JFrameMain frame = new JFrameMain();
                          frame.setVisible(true);
                      } catch (Exception e) {
                          e.printStackTrace();
                      }
                  }
              });
          }
          /**
           * Create the frame.
           */
          public JFrameMain() {
              setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              setBounds(100, 100, 450, 300);
              contentPane = new JPanel();
              contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
              setContentPane(contentPane);
              contentPane.setLayout(null);
              
              textFieldProductId = new JTextField();
              textFieldProductId.setBounds(35, 23, 362, 20);
              contentPane.add(textFieldProductId);
              textFieldProductId.setColumns(10);
              
              JButton ButtonQRCode = new JButton("QR Code");
              
              ButtonQRCode.addActionListener(new ActionListener() {
                  public void actionPerformed(ActionEvent e) {
                      
                      do_ButtonQRCode_actionPerformed(e);
                      
                      }
                  
              });
              ButtonQRCode.setBounds(76, 65, 89, 23);
              contentPane.add(ButtonQRCode);
              
              JButton ButtonBarCode = new JButton("Bar Code");
              ButtonBarCode.addActionListener(new ActionListener() {
                  public void actionPerformed(ActionEvent e) {
                      do_ButtonBarCode_actionPerformed(e);
                                  
                  }
              });
              ButtonBarCode.setBounds(241, 65, 89, 23);
              contentPane.add(ButtonBarCode);
              
              JLabel labelImage = new JLabel("");
              labelImage.setBorder(new LineBorder(new Color(0, 0, 0)));
              labelImage.setBounds(47, 101, 346, 118);
              contentPane.add(labelImage);
          }
              protected void do_ButtonQRCode_actionPerformed(ActionEvent e) {
                  String productId = textFieldProductId.getText();
                  if(productId.isEmpty()) {
                      JOptionPane.showMessageDialog(null,"Por favor preencha o campo acima.");
                  }else {
                      byte [] result = ZXingHelper.getQRCodeImage(productId, 200, 200);
                      labelImage.setIcon(new ImageIcon(result));
              }
              
              
      }
              protected void do_ButtonBarCode_actionPerformed(ActionEvent e) {
                  String productId = textFieldProductId.getText();
                  if(productId.isEmpty()) {
                      JOptionPane.showMessageDialog(null,"Por favor preencha o campo acima.");
                  }else {
                      byte [] result = ZXingHelper.getBarCodeImage(productId, 200, 200);
                      labelImage.setIcon(new ImageIcon(result));
                  
                      
                  
                      
                  }
              }
              
      }
       
      package helpers;
      import java.io.ByteArrayOutputStream;
      import java.util.Hashtable;
      import com.google.zxing.BarcodeFormat;
      import com.google.zxing.EncodeHintType;
      import com.google.zxing.client.j2se.MatrixToImageWriter;
      import com.google.zxing.common.BitMatrix;
      import com.google.zxing.oned.Code128Writer;
      import com.google.zxing.qrcode.QRCodeWriter;
      import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;

      public class ZXingHelper {
          public static byte[] getQRCodeImage (String text, int width, int height) {
              
              try {
                  QRCodeWriter qrCodeWriter = new QRCodeWriter();
                  BitMatrix bitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, width, height);
                  ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
                  MatrixToImageWriter.writeToStream(bitMatrix, "png", byteArrayOutputStream);
                  return byteArrayOutputStream.toByteArray();
                  
          }catch (Exception e) {
              return null;
          }
          }
          
          public static byte [] getBarCodeImage(String text, int width, int height) {
              
              try {
                  Hashtable<EncodeHintType, ErrorCorrectionLevel> hintMap = new Hashtable<>();
                          hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
                          Code128Writer writer = new Code128Writer();
                          BitMatrix bitMatrix = writer.encode(text, BarcodeFormat.CODE_128, width, height);
                          ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
                          MatrixToImageWriter.writeToStream(bitMatrix, "png", byteArrayOutputStream);
                          return byteArrayOutputStream.toByteArray();
              } catch (Exception e) {
                  System.err.println(e.getMessage());
              }
              return null; 
                  
              }
      }
       
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.