Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Dúvida no Ex. 2 da Aula 8 - Empacotando o jogo

Oi gente!

No meu caso o jogo não roda na JVM

O programa não roda!, mas compilou, aqui está o resultado, inclusive roda no REPL, mas tambem ao fazer lein run faz o seguinte :


C:\Users\Cremildo Vostro\forca>lein run
Vidas  6
_  _  _  _  _  _  _  _

E para definitivamente aqui!

A seguir está o resultado do lein uberjar:

C:\Users\Cremildo Vostro\forca>lein uberjar
Created C:\Users\Cremildo Vostro\forca\target\forca-0.1.0-SNAPSHOT.jar
Including forca-0.1.0-SNAPSHOT.jar
Including clojure-1.4.0.jar
Created C:\Users\Cremildo Vostro\forca\target\forca-0.1.0-SNAPSHOT-standalone.jar

Ao tentar rodar lanca a seguite exception, que parece tem a ver com o JVM:

C:\Users\Cremildo Vostro\forca\target>java -jar forca-0.1.0-SNAPSHOT.jar
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: clojure/lang/IFn
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
        at java.lang.Class.privateGetMethodRecursive(Unknown Source)
        at java.lang.Class.getMethod0(Unknown Source)
        at java.lang.Class.getMethod(Unknown Source)
        at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: clojure.lang.IFn
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 7 more
5 respostas

Cremildo , Bom dia !!

tente utilizar o comando lein uberjar dentro do diretório target .

Espero ter ajudado .

Bons estudos

Oi celso!

Dentro do diretorio target tenho dois ficheiros .jar , nomedamente:

forca-0.1.0-SNAPSHOT-standalone.jar

e

forca-0.1.0-SNAPSHOT.jar

O primeiro roda, da seguinte forma:


C:\Users\Cremildo Vostro\forca\target>java -jar forca-0.1.0-SNAPSHOT-standalone.jar
Vidas  6
_  _  _  _  _  _  _  _

Para aqui eternamente... E quando cancelo (Ctrl + C), lança a seguinte exception:

Exception in thread "main"

O sejundo ficheiro .jar (java -jar forca-0.1.0-SNAPSHOT.jar) So lanca uma pilha de exceptions, como se segue:

C:\Users\Cremildo Vostro\forca\target>java -jar forca-0.1.0-SNAPSHOT.jar
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.NoClassDefFoundError: clojure/lang/IFn
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
        at java.lang.Class.privateGetMethodRecursive(Unknown Source)
        at java.lang.Class.getMethod0(Unknown Source)
        at java.lang.Class.getMethod(Unknown Source)
        at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: clojure.lang.IFn
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 7 more

Mas vou tentando achar a solucao, e quando conseguir volto postar.

Se puderes ajudar, peço para me esclarecer a dúvida que postei no exercício anterior sobre funções recursivas! Não entendi na totalidade o código!

Valeu, até breve

solução!

cremildo ,

você tentou fazer o comando lein uberjar dentro da pasta target ?

preciso ver seu código também o motivo de ficar rodando eternamente pode ser algo errado nele entende .

sobre a dúvida é sobre o fibonacci ??

vou explicar no outro tópico ok

Oi celso!

Desculpa a demora, há bom que estou offline, mas já estou de volta! O problema já está ultrapassado, o jogo roda normalmente! Não sei exactamente qual era o problema, pois não fiz nenhuma alteração no código.

Aqui está o código:

(ns forca.core
  (:gen-class))

    (def total-de-vidas 6)
    (def palavra-secreta "MELANCIA")
    (defn perdeu [] (print "voce perdeu! "))
    (defn ganhou [] (print "voce ganhou! "))
    (defn letras-faltantes [palavra acertos]
        (remove (fn [letra] (contains? acertos (str letra))) palavra)
    )

    (defn acertou-a-palavra-toda? [palavra acertos] 
        (empty? (letras-faltantes palavra acertos))
    )

    (defn le-letra! [] (read-line))
    (defn acertou? [chute palavra] (.contains palavra chute))
    (defn imprime-forca [vidas palavra acertos]
        (println "Vidas " vidas)

        (doseq [letra (seq palavra)]
            (if (contains? acertos (str letra))
            (print letra " ") (print "_" " "))) (println))

    (defn jogo [vidas palavra acertos]
        (imprime-forca vidas palavra acertos)
    (cond 
        (= vidas 0) (perdeu) 
        (acertou-a-palavra-toda? palavra acertos) (ganhou)
        :else 
            (let [chute(le-letra!)]
            (if (acertou? chute palavra)
                (do
                    (println "Acertou a letra!")
                    (recur vidas palavra (conj acertos chute)))
                (do
                    (println "Errou a letra! Perdeu vida!")
                    (recur (dec vidas) palavra acertos))))))

    (defn comeca-o-jogo [] (jogo total-de-vidas palavra-secreta #{}))


(defn -main [& args]
  (comeca-o-jogo))

Cremildo, Boa Tarde !

que bom , que conseguiu rodar o programa , com isso fechei o topico ok

Bons estudos