@@ -530,8 +530,6 @@ class ReplDriver(settings: Array[String],
530
530
if (f.isClassContainer) f.iterator.flatMap(flatten)
531
531
else Iterator (f)
532
532
533
- val entries = flatten(jarFile)
534
-
535
533
def tryClassLoad (classFile : AbstractFile ): Option [String ] = {
536
534
val input = classFile.input
537
535
try {
@@ -546,27 +544,33 @@ class ReplDriver(settings: Array[String],
546
544
}
547
545
}
548
546
549
- val existingClass = entries.filter(_.ext.isClass).find(tryClassLoad(_).isDefined)
550
- if (existingClass.nonEmpty)
551
- out.println(s " The path ' $path' cannot be loaded, it contains a classfile that already exists on the classpath: ${existingClass.get}" )
552
- state
553
- else inContext(state.context):
554
- val jarClassPath = ClassPathFactory .newClassPath(jarFile)
555
- val prevOutputDir = ctx.settings.outputDir.value
556
-
557
- // add to compiler class path
558
- ctx.platform.addToClassPath(jarClassPath)
559
- SymbolLoaders .mergeNewEntries(defn.RootClass , ClassPath .RootPackage , jarClassPath, ctx.platform.classPath)
560
-
561
- // new class loader with previous output dir and specified jar
562
- val prevClassLoader = rendering.classLoader()
563
- val jarClassLoader = fromURLsParallelCapable(
564
- jarClassPath.asURLs, prevClassLoader)
565
- rendering.myClassLoader = new AbstractFileClassLoader (
566
- prevOutputDir, jarClassLoader)
567
-
568
- out.println(s " Added ' $path' to classpath. " )
569
- state
547
+ try {
548
+ val entries = flatten(jarFile)
549
+
550
+ val existingClass = entries.filter(_.ext.isClass).find(tryClassLoad(_).isDefined)
551
+ if (existingClass.nonEmpty)
552
+ out.println(s " The path ' $path' cannot be loaded, it contains a classfile that already exists on the classpath: ${existingClass.get}" )
553
+ else inContext(state.context):
554
+ val jarClassPath = ClassPathFactory .newClassPath(jarFile)
555
+ val prevOutputDir = ctx.settings.outputDir.value
556
+
557
+ // add to compiler class path
558
+ ctx.platform.addToClassPath(jarClassPath)
559
+ SymbolLoaders .mergeNewEntries(defn.RootClass , ClassPath .RootPackage , jarClassPath, ctx.platform.classPath)
560
+
561
+ // new class loader with previous output dir and specified jar
562
+ val prevClassLoader = rendering.classLoader()
563
+ val jarClassLoader = fromURLsParallelCapable(
564
+ jarClassPath.asURLs, prevClassLoader)
565
+ rendering.myClassLoader = new AbstractFileClassLoader (
566
+ prevOutputDir, jarClassLoader)
567
+
568
+ out.println(s " Added ' $path' to classpath. " )
569
+ } catch {
570
+ case e : Throwable =>
571
+ out.println(s " Failed to load ' $path' to classpath: ${e.getMessage}" )
572
+ }
573
+ state
570
574
571
575
case KindOf (expr) =>
572
576
out.println(s """ The :kind command is not currently supported. """ )
0 commit comments