相关疑难解决方法(0)

Java - 获取JVM中加载的所有类的列表

我想得到一个属于某个包的所有类的列表以及他们所有的孩子.这些类可能已经加载,也可能没有加载到JVM中.

java reflection jvm

65
推荐指数
7
解决办法
9万
查看次数

Java ClassLoader委托模型?

在调用loadClass()a时ClassLoader,是否ClassLoader首先检查是否已加载该类,还是立即将此检查委托给其父级ClassLoader

Java API说:

当请求查找类或资源时,ClassLoader实例会在尝试查找类或资源本身之前,将对类或资源的搜索委托给其父类加载器.

但是在Java Reflection in Action一书中有一个关于类加载器的特定章节,它说:

类加载器调用findLoadedClass来检查是否已经加载了类.如果类加载器没有找到加载的类,则在父类加载器上调用loadClass.

哪个是对的?

java classloader

12
推荐指数
1
解决办法
9178
查看次数

如何在Apache Flink中使用Scala XML?

我试图在Flink中使用Scala XML库来解析XML,但我无法使其工作.请注意,我需要在相同的处理函数中对我的代码使用序列化和非序列化(字符串)版本.

我尝试过不同的解决方案,它们总是在IntelliJ中工作,但是当我在Flink集群上运行时却没有.他们总是回归不同java.lang.LinkageError: com/sun/org/apache/xerces/internal/jaxp/SAXParserImpl$JAXPSAXParser; 我尝试了很多东西,但我仍然得到类似于这个的错误.

这是我的Flink Job的样子:

object StreamingJob {
  import org.apache.flink.streaming.api.scala._

  val l = List(
    """<ciao>ciao</ciao>""",
  )

  def main(args: Array[String]): Unit = {
    val env = StreamExecutionEnvironment.getExecutionEnvironment
    // set up kafka section excluded
    env.setParallelism(10)

    val stream = env.fromCollection(l)

    stream
      .uid("process")
      .map(new Processor)
      .print

    env.execute("Flink-TEST")
  }
}
Run Code Online (Sandbox Code Playgroud)

这是我的处理功能的一个例子:

import javax.xml.parsers.{SAXParser, SAXParserFactory}
import org.apache.flink.api.common.functions.MapFunction
import scala.xml.{Elem, XML}
import scala.xml.factory.XMLLoader

class Processor extends MapFunction[String, String] {
  override def map(translatedMessage: String): String = {
    val xml = Processor.xmlLoader.loadString(translatedMessage)
    xml.toString
  }
} …
Run Code Online (Sandbox Code Playgroud)

scala maven scala-xml maven-shade-plugin apache-flink

11
推荐指数
1
解决办法
205
查看次数