【问题标题】:NEW is internal proprietary APINEW 是内部专有 API
【发布时间】:2013-08-08 12:15:54
【问题描述】:

在我们的项目构建过程中,我们收到了一个无法解释的警告:

 [javac] (...)\SessionKeeper.java:39: 警告:NEW 是内部专有 API,可能会在未来的版本中删除
    [javac] 私有静态最终 int timeOfInactivity = 1000 * 60 * 9; // 允许的不活动时间
    [javac] ^

附加信息:

  • Apache Ant(TM) 版本 1.8.4 于 2012 年 5 月 22 日编译
  • Java(TM) SE 运行时环境(内部版本 1.7.0_25-b16)

谁能解释为什么编译器会发出这个警告,以及我应该改变什么来避免它?

[编辑]添加附近的代码

private static final String CLASS_NAME = SessionKeeper.class.getName();

    私有静态最终 int logoutDelaySeconds = 1000 * 60; // 1分钟后注销。从向用户显示对话框的那一刻起
    私有静态最终 int timeOfInactivity = 1000 * 60 * 9; // 允许的不活动时间

    私有布尔 isSchedulerStarted = false; // 指示 SessionKeeper 是否已启动

    私有静态 SessionKeeper 实例;

[编辑] 由于很多人要求我在此处附上源代码(24 小时后到期): http://pastebin.com/t2M5mgd0

[edit] 迄今为止的尝试:

  • 内联常量 -> 错误转到上面的行
  • 反应 SessionKeeper 不扩展任何类 -> 相同的错误
  • 删除 CLASS_NAME 和日志记录语句

【问题讨论】:

  • 请展示SessionKeeper.java中的相关代码
  • 您是否错误地将 new 运算符写成大写,并且它以某种方式自动导入了 com.sun.org.apache.bcel.internal.generic.NEW 之类的类?
  • @supersam654 我可以在问题前后附加几行。
  • @Albatros SessionKeeper.java 的第 39 行是什么?
  • 请发布更多代码...

标签: java compiler-warnings


【解决方案1】:

解决方案发现我删除了文件中的所有导入,并用存根替换了所有内容。

这使得java在另一个文件中报告错误。

另一个文件有一个错误且未使用的导入 (import com.sun.org.apache.bcel.internal.generic.NEW)。

因此,我建议遇到此错误的任何人在您的整个工作区中搜索 NEW

【讨论】:

  • 建议在每次更改源代码后检查未使用的导入。这些 NEW 可能是 IDE 误用 quickfix 的结果。
  • 是的,我个人使用 eclipse 保存操作来清理未使用的导入并重新格式化已编辑的行,但不是团队中的每个人都这样做;)
  • 更一般地说,关于“内部专有 API”的错误是指使用 com.sun.* 包中的类。你不应该在你的程序中使用任何com.sun.* 类。
猜你喜欢
  • 1970-01-01
  • 2023-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-01
  • 1970-01-01
相关资源
最近更新 更多