Heim > Java > javaLernprogramm > Wie kann ich Classpath-Ressourcen mithilfe eines benutzerdefinierten URL-Protokolls laden?

Wie kann ich Classpath-Ressourcen mithilfe eines benutzerdefinierten URL-Protokolls laden?

Barbara Streisand
Freigeben: 2024-11-26 07:42:12
Original
801 Leute haben es durchsucht

How Can I Load Classpath Resources Using a Custom URL Protocol?

Verwenden des Classpath-Protokolls zum Laden von Ressourcen

Problemstellung:

Laden von Ressourcen aus dem Klassenpfad Verwendung eines URL-Protokolls, das keine Angabe der spezifischen JAR-Datei oder -Klasse erfordert Ordner.

Lösung:

Implementieren eines URL-Stream-Handlers:

So erstellen Sie ein Protokoll, das Ressourcen aus dem Klassenpfad lädt , implementieren Sie einen benutzerdefinierten URLStreamHandler. Dieser Handler öffnet Verbindungen zu URLs mithilfe des „classpath“-Protokolls.

<br>Der öffentliche Klassenhandler erweitert URLStreamHandler {</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">private final ClassLoader classLoader;

public Handler(ClassLoader classLoader) {
    this.classLoader = classLoader;
}

@Override
protected URLConnection openConnection(URL u) throws IOException {
    final URL resourceUrl = classLoader.getResource(u.getPath());
    return resourceUrl.openConnection();
}
Nach dem Login kopieren

}

Verwendung:

Verwenden Sie den benutzerdefinierten Handler, um das Klassenpfadprotokoll im anzugeben URL beim Laden von Ressourcen.

<br>neu URL("classpath:org/my/package/resource.extension").openConnection();<br>

Umgang mit Startproblemen:

Manuelle Code-Handler-Spezifikation:

Wenn möglich, geben Sie den benutzerdefinierten Handler beim Erstellen manuell an URL.

<br>neue URL(null, "classpath:some/package/resource.extension", new org.my.protocols.classpath.Handler(ClassLoader.getSystemClassLoader())) <br>

JVM-Handler Registrierung:

Registrieren Sie eine URLStreamHandlerFactory bei der JVM, um alle URLs mithilfe des Classpath-Protokolls zu verarbeiten.

<br>URL.setURLStreamHandlerFactory(new ConfigurableStreamHandlerFactory("classpath", neu Handler(ClassLoader.getSystemClassLoader())));<br>

Vorsichtsmaßnahme:

JVM-Handler-Registrierung kann nur einmal pro JVM aufgerufen werden, Seien Sie daher vorsichtig, wenn Sie es in Umgebungen verwenden, in denen es zu Konflikten zwischen mehreren Handlern kommen kann.

Das obige ist der detaillierte Inhalt vonWie kann ich Classpath-Ressourcen mithilfe eines benutzerdefinierten URL-Protokolls laden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage