Embedded Scala REPL erbt den übergeordneten Klassenpfad

8

Wie in dieser Thread scala -cp <classpath> ... gestartet; kann auf <classpath> als String zugegriffen werden und dazu verwendet werden, die eingebettete REPL zu initialisieren? (Der Klassenpfad Java , der über System.getProperty("java.class.path") verfügbar ist, unterscheidet sich vom Scala-Klassenpfad.)

Alternativ kann die eingebettete Scala REPL ihren ClassLoader vom übergeordneten Prozess erben oder konstruieren (Michael Dürigs ScalaDays 2010 Talk könnte relevant sein). Ist das der empfohlene Ansatz?

    
Kipton Barros 08.11.2010, 05:45
quelle

3 Antworten

6

Ich versuche, das Gleiche zu tun, und ich habe gerade einen Weg gefunden, mein herauszubekommen Googeln :

%Vor%

Der obige Code ruft den Klassenpfad im aktuellen Kontext ab.

%Vor%

Setze das in deine settings.classpath und du solltest in der Lage sein, den Versand oder eine andere benötigte Bibliothek zu starten.

    
Eugene Yokota 26.06.2011, 17:19
quelle
2

Setzen Sie die Eigenschaft usejavacp auf True:

%Vor%     
oxbow_lakes 08.11.2010 14:59
quelle
1

Es scheint keinen einfachen Weg zu geben, den "Scala-Klassenpfad" aus einem laufenden Scala-Programm heraus aufzurufen (im Gegensatz dazu ist der "Java-Klassenpfad" über die Systemeigenschaft java.class.path verfügbar). Man möchte z. B. auf das Feld Calculated.userClasspath in der Instanz scala.tools.PathResolver zugreifen, aber Letzteres scheint nicht zugänglich zu sein. Am einfachsten ist es vielleicht, das Startskript scala so zu ändern, dass die Zeichenfolge -classpath in einer Umgebungsvariablen gespeichert wird.

Unter der Annahme, dass der gewünschte Scala-Klassenpfad bestimmt werden kann, kann er an den eingebetteten Scala-Interpreter übergeben werden über: settings.classpath.value = ...

Update : Obwohl die Scala-Klassenpfad-Zeichenfolge möglicherweise nicht direkt aus der Scala-Laufzeit erreichbar ist, weist @Eugene darauf hin, dass sie aus dem Kontext-Classloader extrahiert werden kann. Danke.

    
Kipton Barros 29.11.2010 23:27
quelle

Tags und Links