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 Motta
      As 7 linguagens de programação que você deve aprender em 2020
    • By granderodeo
      Queria que quando o usuário efetuasse o login, exibisse a mensagem "Login efetuado com sucesso", e se houve algum erro também exibisse uma mensagem de erro.
       
      valida_login.php
      <?php session_start(); include_once("config/conexao_fornec.php"); if (isset($_POST['enviar'])) { if (!empty($_POST['login']) || !empty($_POST['senha'])) { $login=$_POST['login']; $senha=MD5($_POST['senha']); $comando="SELECT * FROM usuarios, orders WHERE email = '$login' and senha= '$senha' and id_usuario"; $enviar=mysqli_query($conn, $comando); $resultado= mysqli_fetch_assoc($enviar); if ($resultado) { $_SESSION['id_usuario']=$resultado['?']; $_SESSION['order_date']=$resultado['order_date']; $_SESSION['order_id']=$resultado['order_id']; $_SESSION['login']=$resultado['login']; $_SESSION['senha']=$resultado['senha']; $_SESSION['email']=$resultado['email']; $_SESSION['nome']=$resultado['nome']; $_SESSION['id']=$resultado['id']; $_SESSION['seguranca']=$resultado['seguranca']; header("location:../index.php"); exit; }else{ $_SESSION['msg'] = "<div class='alert alert-success'>Versão e Revisão cadastrada com sucesso!</div>"; } }else{ $_SESSION['mensagem']="<div class='alert alert-danger alert-dismissible text-center' style='width: 24.5%; position: absolute; margin-left: 38.2vw; margin-top: 3vh;'><button type='button' class='close' data-dismiss='alert'>&times;</button>Ops! Alguns dos campos ficou em branco.</div>"; header("location:https://compre-aqui.com/users/"); exit; } }else{ header("location:users"); exit; } ?>  
       
      Corpo do login
      <section class="hero is-success is-fullheight"> <div class="hero-body"> <div class="container has-text-centered"> <div class="column is-4 is-offset-4"> <h2 class="text-center mb-4">Faça seu login</h2> <div class="box"> <form action="validar_login.php" method="POST"> <div class="field"> <div class="form-group"> <label for="name">E-mail</label> <input name="login" id="name" type="name" class="form-control" placeholder="Nome completo"> </div> </div> <div class="field"> <div class="form-group"> <label for="senha">Senha</label> <input name="senha" id="senha" class="form-control" type="password" placeholder="Senha"> </div> </div> <button type="submit" class="btn btn-info btn-block" name="enviar">Realizar login</button> </form> <hr style="background-color: white;"> <a href="https://compre-aqui.com/users/cadastro.php" class="btn btn-info btn-block mt-2">Esqueci minha senha</a> <a href="https://compre-aqui.com/users/cadastro.php" class="btn btn-info btn-block mt-2">Cadastre-se</a> </div> </div> </div> </div> </section>  
    • By RSN
      Boa noite,
      Gostaria de após selecionar o produto carregasse outro select informando os preços(tabela produto), com javascript fazendo requisição para a servlet.
      div class="form-group col-md-4"> <label for="exampleInputEmail1">Produto</label> <select class="form-control select2" style="width: 100%;" id="id_produto" name="id_produto"> <option value="nao_informado">Selecione</option> <c:forEach items="${produto}" var="product"> <option value="${product.id}" id="${product.id}" <c:if test="${product.id == orcament.id_produto}"> <c:out value = "selected=selected" /> </c:if>> ${product.descricao}</option> </c:forEach> </select> </div> <div class="form-group col-md-1"> <label for="exampleInputEmail1">Tabela/Precos</label> <select class="form-control select2" style="width: 100%;" id="id_table" name="id_table" > <option value="nao_informado">Selecione</option> </select> </div>  
    • By johny.freitas
      Boa noite, atualmente criamos um app pela plataforma appsheet(no-code).
      porém estou querendo criar uma aplicação própria(junto a equipe, temos 4pessoas), e nao sei em qual linguagem criar.
      precisamos que funcione web(para o pessoal interno) e mobile(android) para os téc em campo.
      estava pesquisando e vi que pelo react native da pra fazer o web e mobile, nao sei se seria o melhor.
      estavamos fazendo pelo android studio, só que lembramos que vai precisar ser acessado pela web e dei uma pausa.
    • By Mauricio Molina
      Ola,
       
      Tenho este script que peguei na internet, conheço pouco de javascript, para calcular o valor de dois inputs e adicionar a outro input o resultado, esta funcionando corretamente com as alterações que fiz.
       
      Da maneira que eles esta, o resultado esta sendo gerado em forma de moeda ex 20,00.
       
      Gostaria que ele gerasse um numero sem as duas casas após a vírgula, ex 20, e se caso o resultado der 4 dígitos que colocasse ponto automaticamente, ex 2.000
       
      Alguém pode dar uma força?
       
      <script type="text/javascript"> function id(el) { return document.getElementById( el ); } function metros_perc( un, cooper ) { return parseFloat(un.replace(',', '.'), 10) * parseFloat(cooper.replace(',', '.'), 10); } window.onload = function() { id('mquadra').addEventListener('keyup', function() { var result = metros_perc( this.value , id('cooper').value ); id('metros_perc').value = String(result.toFixed(2)).formatMoney(); }); id('cooper').addEventListener('keyup', function(){ var result = metros_perc( id('mquadra').value , this.value ); id('metros_perc').value = String(result.toFixed(2)).formatMoney(); }); } String.prototype.formatMoney = function() { var v = this; if(v.indexOf('.') === -1) { v = v.replace(/([\d]+)/, "$00"); } v = v.replace(/([\d]+)\.([\d]{1})$/, "$1,$20"); v = v.replace(/([\d]+)\.([\d]{2})$/, "$1,$2"); v = v.replace(/([\d]+)([\d]{3}),([\d]{2})$/, "$1.$2,$3"); return v; }; </script> Obrigado!
×

Important Information

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