【问题标题】:Is there a way to let JVM load customized java.io.File instead of the standard one有没有办法让 JVM 加载自定义的 java.io.File 而不是标准的
【发布时间】:2012-03-01 09:12:56
【问题描述】:

在 java.io.File 中添加了一些字段并将其编译到本地 jar。 现在我想将它导入到使用该字段的应用程序中。 但是javac -classpath myio.jar Test.java 不会编译。 使用反射和调用 java -classpath myio.jar Test 得到关于运行时的错误 没有这样的领域。 该文件必须打包为 java.io。有没有办法强制JVM加载本地 java.io.File 还是被禁止了?

【问题讨论】:

  • 为什么要这样做? java.io.File 没有给你什么?
  • 你为什么不直接继承File
  • 让我做对了 - 您创建一个继承自 java.io.File 的类,还是简单地在您的 jar 中实现 java.io.File?这怎么可能行得通?为什么不将其称为 com.my.ExtendedFile 或其他名称 - 然后在您的代码中使用它?
  • 一个非凡的问题需要非凡的理由才能让人们认真对待。你的非凡理由是什么?请给我惊喜。
  • 好吧,是因为安卓。它们有不同的 java 核心库实现。我想移植一些文件。

标签: java class system customization


【解决方案1】:

有没有办法强制 JVM 加载本地 java.io.File 或禁止?

这是禁止的。

您可以可能通过编译您的“自定义”File 类并将其添加到引导类路径来解决此问题......但这是一个非常糟糕的主意为实验以外的任何事情执行此操作。


这是因为安卓。它们有不同的 java 核心库实现。我想移植一些文件。

如果您想将代码从 Android 移植到 Java (TM),您应该更改代码以移除平台依赖项,而不是更改平台。

【讨论】:

    【解决方案2】:

    其实jdk中的File Class是先加载的,所以你的class是不会加载的。 您可以将您的类放入 jdk(rt.jar),如果没有编译错误,它应该可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-12
      • 2021-06-30
      • 2014-06-07
      • 1970-01-01
      相关资源
      最近更新 更多