Bitcoin Blockhöhe abfragen

ven000m

Bekanntes Mitglied
Hallo zusammen,

folgender Code soll die aktuelle Blockhöhe der Bitcoin Blockchain ausgeben:

Java:
import org.bitcoinj.core.BlockChain;
import org.bitcoinj.core.NetworkParameters;
import org.bitcoinj.params.MainNetParams;
import org.bitcoinj.store.BlockStore;
import org.bitcoinj.store.BlockStoreException;
import org.bitcoinj.store.MemoryBlockStore;



public class BlockHigh
{
    public static void main(String[] args) throws BlockStoreException
    {
        // Legen Sie die Netzwerkparameter fest (in diesem Fall Mainnet)
        NetworkParameters params = MainNetParams.get();
        

        // Erstellen Sie einen BlockStore
        BlockStore blockStore = new MemoryBlockStore(params);

        // Erstellen Sie eine BlockChain und verknüpfen Sie sie mit dem BlockStore
        BlockChain chain = new BlockChain(params, blockStore);
        
      
        // Abrufen des aktuellen Blocks
        int latestBlockHeight = chain.getBestChainHeight();
        
        // Ausgabe des aktuellen Blocks
        System.out.println("Aktueller Block: " + latestBlockHeight);
    }
}


BitcoinJ.Jar ist erfolgreich über die Properties eingebunden, er erkennt alle Imports.


Soweit so gut, als Fehler erhalte ich - was mache ich falsch!? Danke
Fehler: Hauptklasse BlockHigh kann nicht initialisiert werden
Ursache: java.lang.NoClassDefFoundError: org/bitcoinj/core/NetworkParameters
 

KonradN

Super-Moderator
Mitarbeiter
Ist in der BitcoinJ.jar denn diese Klasse drin? Kannst Du ja einfach nachsehen, da es ja nur ein zip ist. Und es muss dann halt org/bitcoinj/core/NetworkParameters.class vorhanden sein.

Wenn dies in der jar Datei drin ist: Wie genau startest Du es? Denn die jar Datei ist nicht im Classpath, da ja sonst die Klasse gefunden würde.

Und das scheint veraltet zu sein. Denn bitcoinj.jar ist veraltet (bis version 0.11.3) und wurde dann zu bitcoinj-core.jar ab Version 0.12 und aktuell ist 0.16.2. Und auch aufpassen - laut https://mvnrepository.com/artifact/org.bitcoinj/bitcoinj-core/0.16.2 gibt es auch Runtime Dependencies.
 

ven000m

Bekanntes Mitglied
1672402852387.png

Hallo Konrad,

ich habe die Jar Datei über Properties eingebunden. Er schmeißt auch keinen Fehler beim Import von wegen Unkown etc. ob die Class da drin ist puh gute Frage. Ich kann es gerne mal mit der BitcoinJ Core versuchen..

Ich will eigentlich nur mal einen Beispielcode ausführen, wenn man mir sagt, welche Jar File mit welchem Code ich einbinden kann, dann mache ich den Rest selber. Aber irgendwie hakt es leider total.. ;-(

LG
 
Zuletzt bearbeitet:

KonradN

Super-Moderator
Mitarbeiter
Wenn Eclipse das so akzeptiert, dann wird die Klasse da drin sein.

Wie startest Du das Programm? Was genau machst Du?
 

ven000m

Bekanntes Mitglied
Danke das du mir hilfst, ich starte es mit der rechten Maustaste "Run" -> Java Application.

Dann kommt:
Java:
Fehler: Hauptklasse BlockHigh kann nicht initialisiert werden
Ursache: java.lang.NoClassDefFoundError: org/bitcoinj/core/NetworkParameters

Java:
import org.bitcoinj.core.BlockChain;
import org.bitcoinj.core.NetworkParameters;
import org.bitcoinj.params.MainNetParams;
import org.bitcoinj.store.BlockStore;
import org.bitcoinj.store.BlockStoreException;
import org.bitcoinj.store.MemoryBlockStore;



public class BlockHigh
{
    public static void main(String[] args) throws BlockStoreException
    {
        // Legen Sie die Netzwerkparameter fest (in diesem Fall Mainnet)
        NetworkParameters params = MainNetParams.get();
        

        // Erstellen Sie einen BlockStore
        BlockStore blockStore = new MemoryBlockStore(params);

        // Erstellen Sie eine BlockChain und verknüpfen Sie sie mit dem BlockStore
        BlockChain chain = new BlockChain(params, blockStore);
        
      
        // Abrufen des aktuellen Blocks
        int latestBlockHeight = chain.getBestChainHeight();
        
        // Ausgabe des aktuellen Blocks
        System.out.println("Aktueller Block: " + latestBlockHeight);
    }
}


Exakt mit dieser Datei angebunden als "Add ext. Jar":

LG
 
Y

yfons123

Gast
wahrscheinlich musst du bei der run configuration den classpath ergänzen um das paket
oder du stellst gleich auf maven um und sparst dir das ganze
 

KonradN

Super-Moderator
Mitarbeiter
Ach, ich habe es jetzt einfach einmal versucht nachzuvollziehen.

Das Problem dürfte sein, dass Du es beim Modulepath hinzu gefügt hast. Du nutzt aber keine Module. Du bist im default package und hast daher auch keine module-info.jar.

Was ich z.B. immer mache (so ich mich mal in Eclipse verirre und kein Maven Projekt nutze ... also eigentlich nur, wenn ich versuche, hier im Forum etwas nachzuvollziehen):
  • ich habe einen Ordner lib in meinem Projekt
  • da kopiere ich die jar Datei hin
  • Rechtsclick auf die jar Datei, dann Build Path -> Add to Build Path
Dann erscheint das auch unter Referenced Libraries

Alternativ kannst Du es auch in dem Fenster hinzu fügen. Da aber auf Classpath klicken ehe man auf Add jar oder Add external jar klickt.

Ich denke, damit sollte es dann funktionieren, dass die Library gefunden wird. Aber weitere Abhängigkeiten fehlen dann noch. So kommt bei meinem Test direkt ein:
Code:
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/math/LongMath
    at org.bitcoinj.core.Coin.<clinit>(Coin.java:41)
    at org.bitcoinj.core.NetworkParameters.<clinit>(NetworkParameters.java:122)
    at BlockHigh.main(BlockHigh.java:15)
Caused by: java.lang.ClassNotFoundException: com.google.common.math.LongMath
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    ... 3 more

Da wird also ein Google Common benötigt....


==> das einfachste ist tatsächlich, so Abhängigkeiten mit Maven zu verwalten. Bei einem Maven Projekt hat man all diese Probleme nicht mehr, da auch transitive Abhängigkeiten (also Abhängigkeiten von Abhängigkeiten) automatisch behandelt werden. Und bei Problemen mit dem Projekt muss man keine Bildschirmfotos machen sondern es reicht, einfach den Inhalt der pom.xml zu zeigen.
 

ven000m

Bekanntes Mitglied
Herzlichen Dank!

Ich bin jetzt auch soweit, dass ich die Fehlermeldung habe, die du auch bekommst. Ich habe also noch die Guava (guava-31.1-jre.jar) bei Classpath hinzugefügt und die Bitcoinj-core-0.16.jar bei Classpath ebenso hinzugefügt.

Jetzt heißt es..
Guava requires one runtime dependency, which you can download here:

.. also habe ich die "failureaccess-1.01.jar auch bei Classpath hinzugefügt.

Jetzt: Apply und close

Ausgeführt:
Java:
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
    at org.bitcoinj.params.AbstractBitcoinNetParams.<clinit>(AbstractBitcoinNetParams.java:55)
    at BlockHigh.main(BlockHigh.java:15)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    ... 2 more

Was mache ich noch falsch? Ich hab immernoch den Fehler?

Besten Dank!!!
 

ven000m

Bekanntes Mitglied
Da fehlt jetzt noch die slf4j Library.
Schau einmal https://mvnrepository.com/artifact/org.twostack/bitcoin4j/1.6.4 an. Da siehst Du, was da alles an Abhängigkeiten benötigt wird. Bei den einzelnen Abhängigkeiten musst Du aber natürlich nach den Abhängigkeiten schauen....
SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
Aktueller Block: 0

Ich komme dem Ziel schon immer näher... schau mal. Was mich wundert ist, das ich "0" bei Aktueller Block stehen habe.

Habe übrigens "If you are responsible for packaging an application and do not care about logging, then placing slf4j-nop.jar on the class path of your application will get rid of this warning message." --> die "slf4j-nop.jar" als leeres Paket hinzugefügt. Trotzdem noch der Fehler.
 

KonradN

Super-Moderator
Mitarbeiter
Was mich wundert ist, das ich "0" bei Aktueller Block stehen habe.
Zu dem Ergebnis kann ich nichts sagen, da ich mich mit Bitcoins nicht auskenne. Vor einigen Jahren habe ich mich mal damit beschäftigt, aber ich hatte es dann abgetan.

die "slf4j-nop.jar" als leeres Paket hinzugefügt. Trotzdem noch der Fehler.
Da geht es nicht um eine leere jar sondern das ist ein Paket, das mit mit einfügen kann:
 

ven000m

Bekanntes Mitglied
Danke ich komme immer weiter nach vorne.. hatte mir das schon gedacht.

Java:
Dez. 30, 2022 8:08:00 PM org.bitcoinj.core.Context getOrCreate
WARNUNG: Implicitly creating context. This is a migration step and this message will eventually go away.
Dez. 30, 2022 8:08:00 PM org.bitcoinj.core.Context <init>
INFORMATION: Creating bitcoinj 0.16 context.
Dez. 30, 2022 8:08:00 PM org.bitcoinj.core.AbstractBlockChain <init>
INFORMATION: chain head is at height 0:
 block:
   hash: 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
   version: 1
   previous block: 0000000000000000000000000000000000000000000000000000000000000000
   time: 1231006505 (2009-01-03T18:15:05Z)
   difficulty target (nBits): 486604799
   nonce: 2083236893

Aktueller Block: 0

Das ist jetzt die Ausgabe.. es scheint jetzt nicht mehr direkt ein Fehler zu sein, sieht auch immer besser aus, aber etwas drängt sich vor dem System.out Statement davor.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
onlyxlia Anzahl Random Zahlen mit Scanner abfragen und in Array speichern Java Basics - Anfänger-Themen 10
S If abfragen (+, - , /, *) Java Basics - Anfänger-Themen 13
M Dialogbox solange abfragen, bis gültige Wert-Eingabe Java Basics - Anfänger-Themen 12
Phash Websocket abfragen Java Basics - Anfänger-Themen 1
volcanos List & ArrayList nach Familiennamen abfragen Java Basics - Anfänger-Themen 57
E schneller von der Datenbank abfragen Java Basics - Anfänger-Themen 15
M Checkbox abfragen und Radiobutton Group zurücksetzen Java Basics - Anfänger-Themen 1
L Datenpaare abfragen Java Basics - Anfänger-Themen 11
O ADT Graph nach größe Abfragen Java Basics - Anfänger-Themen 42
B Serial port abfragen Java Basics - Anfänger-Themen 18
F Ordner auf alle Unterdatein abfragen Java Basics - Anfänger-Themen 3
N Abfragen eines Textes aus einem JTextField in Java, Funktion, CardLayout, Java Basics - Anfänger-Themen 2
S boolean Wert von mehreren int Möglichkeiten abfragen ? Java Basics - Anfänger-Themen 4
H Variablen Methode zum Abfragen von Variablen aus Subklassen Java Basics - Anfänger-Themen 9
T Erste Schritte Textfeld abfragen ob etwas enthalten ist. Java Basics - Anfänger-Themen 17
S Asynchrone Socket-Abfragen Java Basics - Anfänger-Themen 5
S mehrfache if-Abfragen - beste Lösung Java Basics - Anfänger-Themen 1
E Abfragen des SimpleDateFormats Java Basics - Anfänger-Themen 1
L int array abfragen Java Basics - Anfänger-Themen 16
T Variablen Var aus While-Schleife abfragen -.-' Java Basics - Anfänger-Themen 9
Y Mehrdimensionales Array diagonal abfragen. Java Basics - Anfänger-Themen 5
S Datenbank auf Knopfdruck abfragen Java Basics - Anfänger-Themen 8
T if abfragen verkürzen Java Basics - Anfänger-Themen 5
M Wo Hilfsvariablen abfragen? Java Basics - Anfänger-Themen 1
M Farben/Color Abfragen von Farben innerhalb einer Methode Java Basics - Anfänger-Themen 9
M "Exceptions abfragen" Java Basics - Anfänger-Themen 6
M Frage nach BestPractice in if-Abfragen Java Basics - Anfänger-Themen 1
P Anlegen und Abfragen von Array List Java Basics - Anfänger-Themen 4
R IF Abfragen Java Basics - Anfänger-Themen 8
R If Abfragen Problem! Java Basics - Anfänger-Themen 4
I Button abfragen ob er geklickt wurde Java Basics - Anfänger-Themen 4
C If Abfragen Problem Java Basics - Anfänger-Themen 46
I Drei booleans abfragen Java Basics - Anfänger-Themen 2
R Input/Output Java String abfragen Java Basics - Anfänger-Themen 3
A Vokabel abfragen Java Basics - Anfänger-Themen 3
R Datentypen Datentyp eines Werts in einer Textdateizeile abfragen und ändern Java Basics - Anfänger-Themen 4
N Best Practice Stilistische Anwendung von if/else-Abfragen Java Basics - Anfänger-Themen 7
E Checkboxen abfragen Java Basics - Anfänger-Themen 10
H if abfragen Java Basics - Anfänger-Themen 38
C TreeMap Abfragen Problem Java Basics - Anfänger-Themen 7
S Abfragen wenn das ende einer Tabelle erreicht ist Java Basics - Anfänger-Themen 8
B mehrere Abfragen zusammenfügen Java Basics - Anfänger-Themen 3
H durch Schleife 50 Variablen abfragen Java Basics - Anfänger-Themen 8
B If abfragen! Java Basics - Anfänger-Themen 9
J checkbox status abfragen und drucken Java Basics - Anfänger-Themen 13
M AWT Applet - Button aus anderer Klasse abfragen Java Basics - Anfänger-Themen 4
F Bedingungen mit Abfragen verknüpfen Java Basics - Anfänger-Themen 7
P länge von array abfragen? Java Basics - Anfänger-Themen 2
Gossi Input/Output Datei Lesen, inhalt abfragen, speichern Java Basics - Anfänger-Themen 5
T jNumberField auf null abfragen Java Basics - Anfänger-Themen 5
Z Erste Schritte LinkedList Werte abfragen und vergleichen Java Basics - Anfänger-Themen 3
S Input/Output Welche Möglichkeiten Eingabe von User abfragen Java Basics - Anfänger-Themen 5
H Checkboxstatus abfragen Java Basics - Anfänger-Themen 10
S unzulässigen Wert abfragen - aber wo Java Basics - Anfänger-Themen 3
eLogic Aktive Internetverbindung abfragen Java Basics - Anfänger-Themen 21
B Abfragen eines Preises.. Java Basics - Anfänger-Themen 20
D Touchpad abfragen?! Java Basics - Anfänger-Themen 9
D Abfragen ob Excel-Dateien Makros enthalten? Java Basics - Anfänger-Themen 4
B Abfragen eines Excel-Feldes auf null Java Basics - Anfänger-Themen 17
B GridLayout - elemente mit Maus abfragen Java Basics - Anfänger-Themen 3
B Daten in Instanz einer Klasse ändern / abfragen Java Basics - Anfänger-Themen 12
M Datentypen String mit Trennzeichen abfragen Java Basics - Anfänger-Themen 7
D GUI Checkboxen in allen Klassen abfragen? Java Basics - Anfänger-Themen 5
B OOP String auf bestimmte Zeichen abfragen Java Basics - Anfänger-Themen 4
M Double.NaN abfragen Java Basics - Anfänger-Themen 6
J Performance Vergleich von if-Abfragen mit mehreren Bedingungen Java Basics - Anfänger-Themen 9
H Objecttyp abfragen... Java Basics - Anfänger-Themen 11
N Zeilenanzahl einer TXT abfragen..? Java Basics - Anfänger-Themen 11
S Bremsen 3 IF-Abfragen ein Programm? Java Basics - Anfänger-Themen 7
T scanner bestimmtes format abfragen Java Basics - Anfänger-Themen 5
T JOptionPane mit .showInputDialog: Ergebnis abfragen? Java Basics - Anfänger-Themen 2
S Absatz aus Textdokument abfragen Java Basics - Anfänger-Themen 6
B gedrückte Tasten abfragen Java Basics - Anfänger-Themen 11
L "unschöne" if-Abfragen Java Basics - Anfänger-Themen 4
JFeel-x JComponent<-----Eigenschaften<-- Als Liste abfragen? Java Basics - Anfänger-Themen 8
P Pixelfarbe abfragen Java Basics - Anfänger-Themen 8
J einfache Tastendrücke in einem JFrame abfragen Java Basics - Anfänger-Themen 2
S if-Abfragen bringen mich zum VERZWEIFELN! Java Basics - Anfänger-Themen 12
B Aus JTable ImageIcon abfragen Java Basics - Anfänger-Themen 8
hdi Desktop-Auflösung abfragen -> setLocation() von Frame Java Basics - Anfänger-Themen 5
D jeditorpane checkbox abfragen? Java Basics - Anfänger-Themen 7
A Googel Lokal abfragen Java Basics - Anfänger-Themen 7
G in einem inputstream auf " " abfragen? Java Basics - Anfänger-Themen 3
T Rechner-Name abfragen Java Basics - Anfänger-Themen 6
N Event auf JTabbedPane abfragen ? Java Basics - Anfänger-Themen 8
M Maus position abfragen und setzen? Java Basics - Anfänger-Themen 1
L JTabel abfragen ob es eine erste Zeile gibt? Java Basics - Anfänger-Themen 2
G If Abfragen Java Basics - Anfänger-Themen 3
T Variablen Classübergreifen abfragen Java Basics - Anfänger-Themen 6
S Abfragen ob Label enabled ist . Java Basics - Anfänger-Themen 2
M Status von ext. Programm abfragen Java Basics - Anfänger-Themen 2
G [Applet] Mauskkoodinaten abfragen Java Basics - Anfänger-Themen 3
C String.split("") einzelne Positionen abfragen Java Basics - Anfänger-Themen 10
R Vector mit contains abfragen Java Basics - Anfänger-Themen 32
T String splitten und auf fehler abfragen Java Basics - Anfänger-Themen 3
V thread, variable abfragen Java Basics - Anfänger-Themen 14
F Abfragen aber wie ? Java Basics - Anfänger-Themen 7
G JDialog-Status im Frame abfragen Java Basics - Anfänger-Themen 2
V .jar macht keine Datenbank abfragen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben