在Android Studio中反编译scala的.class文件会生成.java文件?

justHelloWorld

首先,我不太了解Scala,也不太了解.class文件(来自Java和Scala)。

我正在Android上移植Apache Flink该项目中使用的一种库是flink-runtime.jar并且包含以下Scala文件:

runtime/minicluster/LocalFlinkMiniCluster.scala

当Intellij IDEA对LocalFlinkMiniCluster.class包含的.jar文件进行反编译时,将LocalFlinkMiniCluster.scala显示正确的原始文件

在Android Studio中不会发生这种情况。而是随消息返回Java代码:

反编译的.class文件,字节码版本:50.0(Java 6)

为了使您更好地理解我在说什么,这是setMemory原始.scala文件中的方法

  def setMemory(config: Configuration): Unit = {
    // set this only if no memory was pre-configured
    if (config.getInteger(ConfigConstants.TASK_MANAGER_MEMORY_SIZE_KEY, -1) == -1) {

      val bufferSize: Int = config.getInteger(
        ConfigConstants.TASK_MANAGER_MEMORY_SEGMENT_SIZE_KEY,
        ConfigConstants.DEFAULT_TASK_MANAGER_MEMORY_SEGMENT_SIZE)

      val bufferMem: Long = config.getLong(
        ConfigConstants.TASK_MANAGER_NETWORK_NUM_BUFFERS_KEY,
        ConfigConstants.DEFAULT_TASK_MANAGER_NETWORK_NUM_BUFFERS) * bufferSize.toLong

      val numTaskManager = config.getInteger(
        ConfigConstants.LOCAL_NUMBER_TASK_MANAGER,
        ConfigConstants.DEFAULT_LOCAL_NUMBER_TASK_MANAGER)

      val memoryFraction = config.getFloat(
        ConfigConstants.TASK_MANAGER_MEMORY_FRACTION_KEY,
        ConfigConstants.DEFAULT_MEMORY_MANAGER_MEMORY_FRACTION)

      // full memory size
      var memorySize: Long = EnvironmentInformation.getSizeOfFreeHeapMemoryWithDefrag

      // compute the memory size per task manager. we assume equally much memory for
      // each TaskManagers and each JobManager
      memorySize /= numTaskManager + 1 // the +1 is the job manager

      // for each TaskManager, subtract the memory needed for memory buffers
      memorySize -= bufferMem
      memorySize = (memorySize * memoryFraction).toLong
      memorySize >>>= 20 // bytes to megabytes
      config.setLong(ConfigConstants.TASK_MANAGER_MEMORY_SIZE_KEY, memorySize)
    }
  }

这是Android Studio创建的Java版本(亚洲符号到底是什么?):

public void setMemory(Configuration config) {
    if(config.getInteger("taskmanager.memory.size", -1) == -1) {
        int bufferSize = config.getInteger("taskmanager.memory.segment-size", '耀');
        long bufferMem = config.getLong("taskmanager.network.numberOfBuffers", 2048L) * (long)bufferSize;
        int numTaskManager = config.getInteger("local.number-taskmanager", 1);
        float memoryFraction = config.getFloat("taskmanager.memory.fraction", 0.7F);
        long memorySize = EnvironmentInformation.getSizeOfFreeHeapMemoryWithDefrag();
        memorySize /= (long)(numTaskManager + 1);
        memorySize -= bufferMem;
        memorySize = (long)((float)((double)memorySize * (double)memoryFraction));
        memorySize >>>= 20;
        config.setLong("taskmanager.memory.size", memorySize);
    }

}

显然,这两种方法的执行具有不同的效果。

请,您能帮我了解为什么会发生这种情况以及如何解决此问题吗?谢谢。

justHelloWorld

我自己发现了问题:默认情况下,Scala插件是在IntelliJ上安装的(或者向导中始终有一个选项)。而是必须在Android Studio中手动安装。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 Android Studio 中打开反编译文件

IInAppBillingService.java在Android Studio中不会生成Java文件

在Android Studio中的lib中反编译自生成的jar

使用'java'编译类时,Java 11不会生成.class文件

如何在Android中以编程方式反编译dex文件?

如何从反编译的 APK 中获取 android.mk 文件?

Null在反编译的Java类文件中强制转换

即使语法错误也会生成Python编译文件

Android studio 显示反编译的类而不是 java 类

Android Studio Java反编译器

在Java内存中压缩文件会生成一个zip文件,但其中的文件为空

有没有办法反编译通过Expo构建的apk并在Android Studio中打开生成的项目?

反编译XAPK文件

反编译* .pyc文件

如何“反编译” Java类文件?

如何反编译Java类文件?

为什么在Android Studio 3.1.2中将“将Kotlin反编译为Java”显示为灰色

Java源文件中的IntelliJ显示为空反编译的类文件

cli java .class文件的反编译器

我的C#Visual Studio项目在编译时会生成过多的dll文件

Android Studio在生成的Java文件夹中生成包名错误的AIDL java文件

在Android Studio中整理Java文件

Java 文件未显示在 android studio 中

以编程方式反编译.class文件

Android Studio生成资产文件

在Android Studio中编译文件时出错

编译时,Android Studio中无法删除文件

Android Studio中的“无法获取文件的编译器信息...”

如何在Android Studio中成功编译NDK(C文件)?