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