[ 
https://issues.apache.org/jira/browse/SPARK-13118?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15196427#comment-15196427
 ] 

Reynold Xin commented on SPARK-13118:
-------------------------------------

I'm moving this out to its own ticket. 

I think there is still a problem, and it lies in our way to get the full name 
of a class in ScalaReflection.scala
{code}
  /** Returns the full class name for a type. */
  def getClassNameFromType(tpe: `Type`): String = {
    tpe.erasure.typeSymbol.asClass.fullName
  }
{code}

According to the Scala doc here: 
http://www.scala-lang.org/api/2.11.7/scala-reflect/index.html#scala.reflect.api.Symbols$ClassSymbol
{noformat}
abstract def fullName: String
The encoded full path name of this symbol, where outer names and inner names 
are separated by periods.
{noformat}

This causes problem with inner classes. For example
{code}
scala> 
Class.forName("org.apache.spark.mllib.tree.model.DecisionTreeModel.SaveLoadV1_0.SplitData")
java.lang.ClassNotFoundException: 
org.apache.spark.mllib.tree.model.DecisionTreeModel.SaveLoadV1_0.SplitData
  at 
scala.reflect.internal.util.AbstractFileClassLoader.findClass(AbstractFileClassLoader.scala:62)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
  at java.lang.Class.forName0(Native Method)
  at java.lang.Class.forName(Class.java:264)
  ... 49 elided

scala> 
Class.forName("org.apache.spark.mllib.tree.model.DecisionTreeModel$SaveLoadV1_0$SplitData")
res6: Class[_] = class 
org.apache.spark.mllib.tree.model.DecisionTreeModel$SaveLoadV1_0$SplitData
{code}

> Support for classes defined in package objects
> ----------------------------------------------
>
>                 Key: SPARK-13118
>                 URL: https://issues.apache.org/jira/browse/SPARK-13118
>             Project: Spark
>          Issue Type: Improvement
>          Components: SQL
>    Affects Versions: 1.6.0
>            Reporter: Michael Armbrust
>
> When you define a class inside of a package object, the name ends up being 
> something like {{org.mycompany.project.package$MyClass}}.  However, when 
> reflect on this we try and load {{org.mycompany.project.MyClass}}.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@spark.apache.org
For additional commands, e-mail: issues-h...@spark.apache.org

Reply via email to