@@ -527,8 +527,6 @@ class ReplDriver(settings: Array[String],
527527          if  (f.isClassContainer) f.iterator.flatMap(flatten)
528528          else  Iterator (f)
529529
530-         val  entries  =  flatten(jarFile)
531- 
532530        def  tryClassLoad (classFile : AbstractFile ):  Option [String ] =  {
533531          val  input  =  classFile.input
534532          try  {
@@ -543,27 +541,33 @@ class ReplDriver(settings: Array[String],
543541          }
544542        }
545543
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
567571
568572    case  KindOf (expr) => 
569573      out.println(s """ The :kind command is not currently supported. """ )
0 commit comments