Mais

Meu programa osm2po em java compila, mas apresenta um erro de tempo de execução

Meu programa osm2po em java compila, mas apresenta um erro de tempo de execução


Preciso de distâncias rodoviárias e estou tentando usar o osm2po para fazer isso.

Depois de baixar os arquivos OSM e convertê-los para o formato gph, usando o programa osm2po, começo do início com o seguinte programa java muito simples:

import java.io.File; import java.util.Arrays; import de.cm.osm2po.logging.Log; import de.cm.osm2po.logging.Log2poConsoleWriter; import de.cm.osm2po.model.LatLon; import de.cm.osm2po.routing.Graph; import de.cm.osm2po.routing.MultiTargetRouter; import de.cm.osm2po.routing.PoiRouter; public class TestOSM {public static void main (String [] args) {Arquivo graphFile = new File ("C: /osm2po/osm2po-5.0.0/hh/hh_2po.gph"); Graph graph = novo Graph (graphFile); // Em algum lugar em Hamburgo int sourceId = graph.findClosestVertexId (53.5f, 10.0f); int targetId = graph.findClosestVertexId (53.4f, 10.1f); graph.close (); }}

Eu consigo compilar usando:

javac -d. -classpath osm2po-core-5.0.0-signed.jar TestOSM.java

Ele compila e cria oTestOSM.classArquivo.

Em seguida, uso o seguinte para executar o programa:

java TestOSM

Ele dá um erro de tempo de execução (mostrarei a mensagem de erro abaixo)

Suspeitei que o programa não lê ohh_2po.gpharquivo, então usei outro programa java para usar primeiro o arquivo java "normal" lido para confirmar a operação de leitura de arquivo bem-sucedida.

Meu programa java para tentar confirmar a leitura bem-sucedida do arquivo tem a seguinte aparência:

import java.io.File; import java.util.Arrays; import java.io.Console; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.io.FileInputStream; import java.io.InputStream; import de.cm.osm2po.logging.Log; import de.cm.osm2po.logging.Log2poConsoleWriter; import de.cm.osm2po.model.LatLon; import de.cm.osm2po.routing.Graph; import de.cm.osm2po.routing.MultiTargetRouter; import de.cm.osm2po.routing.PoiRouter; public class TestOSM {public static void main (String [] args) {// Testando take1 Arquivo graphFile = new File ("C: /osm2po/osm2po-5.0.0/hh/hh_2po.gph"); // Arquivo graphFile = new File (args [0]); // tentei fazer isso e forneça o nome do arquivo ao chamar o programa - não funciona // Arquivo graphFile = new File ("hh_2po.gph"); // tentei fazer isso depois de copiar hh_2po.gph no mesmo diretório - não funciona Graph graph = new Graph (graphFile); // Em algum lugar em Hamburgo int sourceId = graph.findClosestVertexId (53.5f, 10.0f); int targetId = graph.findClosestVertexId (53.4f, 10.1f); graph.close (); / * // Testing take2 // Parte 1, para confirmar que o programa pode ler o arquivo hh_2po.gph: try {BufferedReader reader = new BufferedReader (new FileReader (new File ("C: /osm2po/osm2po-5.0.0/ hh / hh_2po.gph "))); String thisLine = thisLine = reader.readLine (); System.out.println (thisLine); System.out.println ("arquivo lido corretamente"); leitor.close (); } catch (IOException ioe) {System.out.println ("não foi possível ler o arquivo"); } System.out.println ("digite para continuar"); Console console = System.console (); String line = console.readLine (); // fim do teste // Parte 2, desta vez tente converter o arquivo para InputStream antes de converter para um gráfico: tente {File initialFile = new File ("C: /osm2po/osm2po-5.0.0/hh/hh_2po.gph" ); InputStream targetStream = novo FileInputStream (initialFile); Gráfico gráfico = novo gráfico (targetStream); } catch (IOException ioe) {System.out.println ("Heuston, temos um problema"); } * /}}

Quando eu o executo, novamente usando java TestOSM, recebo o seguinte erro de tempo de execução:

Eu uso Windows10 e java jdk1.8.0_60


Você precisa especificar o caminho de classe. O erro está dizendo que uma classe não está sendo encontrada. Execute seu arquivo com a opção cp:

java -cp osm2po-core-5.0.0-signed.jar TestOSM

Assista o vídeo: Si ta perdorim JOSM - Java OpenStreetMap.. ne shqip