Eine jks-Datei kann nicht aus dem Klassenpfad geladen werden

8

Ich habe eine JKS-Datei mit öffentlichen und privaten RSA-Schlüsseln erstellt. Wenn ich diese Datei mit einem externen Pfad lade (wie c: /file.jks), wird das Programm wie ein Charm ausgeführt. Wenn ich jedoch versuche, diese Datei aus dem Klassenpfad zu laden, habe ich folgende Ausnahme:

%Vor%

Dies ist der Code, der zum Laden der jks verwendet wird:

%Vor%

Der einzige Unterschied ist, dass ich FileInputStream mit vollem Pfad benutze, wenn ich extern lade. Was mache ich falsch?

    
brevleq 28.02.2014, 19:57
quelle

2 Antworten

5

Im Allgemeinen sollte Ihre Lösung provisorisch funktionieren.

Was sind diese Bestimmungen? Stellen Sie sicher, dass sich Ihr Ressourcenordner in Ihrem Klassenpfad befindet. Wenn Sie nicht sicher sind, fügen Sie es dem -cp -Flag hinzu, das an java übergeben wird, wenn Sie Ihr Programm ausführen, oder wenn Sie Eclipse oder eine andere IDE verwenden, stellen Sie sicher, dass es als Mitglied des Klassenpfads für dieses Projekt aufgeführt ist .

Als nächstes checken Sie diesen Stack-Overflow aus, der sich darauf bezieht deine Frage Während die Methode getResourceAsStream () der Klasse gültig ist (einschließlich / am Anfang des Dateinamens bewirkt, dass der Klassenressourcenlader auf die Methode des ClassLoaders zurückgreift), ist es vielleicht weniger verwirrend, den ClassLoader direkt zu verwenden. Ein anderes gutes Beispiel finden Sie hier .

Überprüfen Sie zuerst, ob Ihr Ressourcenordner explizit Teil des Klassenpfads ist. Zweitens, bevorzugen Sie die folgende Konstruktion, um die Ressource zu finden:

%Vor%

Beachten Sie das fehlende / aus dem Dateinamen. Dies liegt daran, dass der ClassLoader automatisch mit der Suche nach "Projektstamm" beginnt und der Schrägstrich wahrscheinlich nur Probleme verursacht (z. B. bei JBoss oder Tomcat, die wahrscheinlich vom Klassenlader als absoluter Dateisystempfad interpretiert werden) eines relativen Pfades).

Ich hoffe, das hilft. Wenn nicht, kommentiere mich mit weiteren Details zu deinem Projekt und ich werde meine Antwort entsprechend ändern.

    
ProgrammerDan 05.03.2014, 17:43
quelle
2

Ich vermute, dass die beiden Keystores tatsächlich nicht identisch sind und der Keystore im Klassenpfad irgendwie beschädigt ist.

Versuchen Sie, die beiden Keystores zu vergleichen. Lesen Sie die Dateien einfach in ein Byte-Array mit folgendem Inhalt:

%Vor%

Und dann vergleiche sie so:

%Vor%     
Ebbe M. Pedersen 07.03.2014 22:55
quelle

Tags und Links