Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade

internet

Top Contributor
Hallo,

das Problem ist bereits hier geschildert (https://www.java-forum.org/thema/sass-compiler-und-string-erhalten.201841/post-1348376)
Ich mache aber nochmal einen anderen Thread auf.

Im Grunde scheint mir das Problem zu sein, dass ich beim laufenden Applikationsserver nicht mehr auf die Pfade zugreifen kann, die in einer Sass - Datei sind, also:

@import '../sass/theme/_theme_light';

Ich nutze folgende Lib um mit einer Sass - Datei (und deren Unterdateien) eine CSS - Datei zu erstellen.
Führe ich das ganze in einer Main - Methode aus, klappt das ganze.
Führe ich das ganze innerhalb einem laufenden WildFly aus, erhalte ich eine Fehlermeldung:

Error: java.lang.IllegalArgumentException: Can't handle url: vfs:/Applications/Software/wildfly-21.0.0.Final/standalone/deployments/myApp.war/WEB-INF/lib/myExternalJarApp-1.0-SNAPSHOT.jar/files/template/jsf/primefaces/rain/sass/theme/_theme_dark

Ich nutze für das Generieren des CSS Codes diese Lib:

Java:
<dependency>
    <groupId>de.larsgrefer.sass</groupId>
    <artifactId>sass-embedded-host</artifactId>
    <version>1.12.1</version>
</dependency>

Wenn ich es von der Main - Methode ausführe, dann habe ich auch einen anderen Typ:
1679046854490.png


Von App - Server:
1679046903626.png

Kann hier jemand helfen?
 
Zuletzt bearbeitet:
Dein Quellcode it gut durch popups verdeckt. Daher hier eine allgemeine Antwort:

Im JBoss greifst du auf eine Datei innerhalb einer WAR zu. Daher gibt es das virtuelle FS, dass in der Lage ist diese Datei zu referenzieren.

Ich weiß jetzt nicht, ob den Teil´, den du ausführst in deinem Code ist oder in der LIB. Wenn in letztem gehe ich davon aus, dass es schwer ist relative Pfadangaben anschließend im vFS zu resolven.

Wenn du hier mehr Details postest, kann ich am Montag Lars auf diesen Post aufmerksam machen.

Es gibt auch eine weitere LIB, die WebJars Support erlaubt: https://github.com/larsgrefer/dart-sass-java#advanced-usage-with-webjars
 
Zuletzt bearbeitet:
danke dir für die Antwort.
Wir haben gerade mal ein Ticket in GitHub dazu erstellt...

Irgendwie scheint es auch Unterschiede zu geben zwischen:

CompileSuccess compileSuccess = sassCompiler.compileFile(file);
CompileSuccess compileSuccess = sassCompiler.compileScssString(myString);

Beim letzteren Scheint es auch Probleme mit dem Pfad zu geben, wohingegen compileFile funktioniert...
 
Warum willst du denn zur Laufzeit compilieren? Vielleicht gibt es da einfachere Wege
Meine User sollen die Möglichkeit haben das Design (Farben) des Webportals selbst definieren zu können.
Anstatt zig physikalische CSS Files zu speichern, generiere ich den CSS Code in einen String.

Der CSS Code wird aus SCSS - Files erstellt. Die Variablen der Farben werden dann entsprechend mit den gespeicherten Farben des Users ersetzt.
 
…außer das es halt nicht funktioniert 😉


Bei der Lib die du nutzt kann es gut sein, dass die einfach nicht innerhalb von Wildfly läuft.
Als Workaround könnte man alle scss-Dateien in ein temporäres Verzeichnis entpacken und dort kompilieren, müsstest du mal testen ob das möglich ist
 
…außer das es halt nicht funktioniert 😉
Ich gehe davon aus, dass er es falsch benutzt.

Um es außerhalb einer WebJar zu verwenden, müsste man es so machen, wie der Kollege es in der Readme beschreibt.

Quote;

To compile the file above we need to register a WebjarsImporter into our compiler:

Java:
try (SassCompiler sassCompiler = SassCompilerFactory.bundled()) {
sassCompiler.registerImporter(new WebjarsImporter().autoCanonicalize());

URL resource = getClass().getResource("/custom-bootstrap.scss");
CompileSuccess compileSuccess = sassCompiler.compile(resource);

//custom Bootstrap css
String css = compileSuccess.getCss();
}
 
Ich gehe davon aus, dass er es falsch benutzt.

Um es außerhalb einer WebJar zu verwenden, müsste man es so machen, wie der Kollege es in der Readme beschreibt.

Quote;

To compile the file above we need to register a WebjarsImporter into our compiler:

Java:
try (SassCompiler sassCompiler = SassCompilerFactory.bundled()) {
sassCompiler.registerImporter(new WebjarsImporter().autoCanonicalize());

URL resource = getClass().getResource("/custom-bootstrap.scss");
CompileSuccess compileSuccess = sassCompiler.compile(resource);

//custom Bootstrap css
String css = compileSuccess.getCss();
}
Da in diesem Fall werden keine Webjars benutzt werden, ist die Anleitung, wie man diese einbindet, eher nicht passend…
 
Dann habe ich das falsch verstanden..

Mit den bröckchen der Informationen meine ich sowas gelesen zu haben:
vfs:/Applications/Software/wildfly-21.0.0.Final/standalone/deployments/myApp.war/WEB-INF/lib/myExternalJarApp-1.0-SNAPSHOT.jar/files/template/jsf/primefaces/rain/sass/theme/_theme_dark
 

Neue Themen


Zurück
Oben