Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NetBeans能否为Java类生成自动串行版本ID?_Java_Netbeans_Serialversionuid - Fatal编程技术网

NetBeans能否为Java类生成自动串行版本ID?

NetBeans能否为Java类生成自动串行版本ID?,java,netbeans,serialversionuid,Java,Netbeans,Serialversionuid,我想通过生成一个自动的串行版本ID来删除某些类的一些警告。在Eclipse中,这很简单——IDE可以自动生成一个警告并将其添加到类中。然而,我在NetBeans中看不到这种功能。有空吗?如果是,它在哪里?如果没有,是否有插件可以启用它?手动操作也很简单,除非您需要与现有序列化实例保持兼容。只需将这一行复制到类中: private static final long serialVersionUID = 1L; 请注意,serialVersionUID在类之间绝对不要求是唯一的 实际上,我解决这

我想通过生成一个自动的串行版本ID来删除某些类的一些警告。在Eclipse中,这很简单——IDE可以自动生成一个警告并将其添加到类中。然而,我在NetBeans中看不到这种功能。有空吗?如果是,它在哪里?如果没有,是否有插件可以启用它?

手动操作也很简单,除非您需要与现有序列化实例保持兼容。只需将这一行复制到类中:

private static final long serialVersionUID = 1L;

请注意,
serialVersionUID
在类之间绝对不要求是唯一的

实际上,我解决这个“问题”的方法是在我的项目配置中停用该警告(我使用Eclipse,但我想对于NetBeans是相同的),因为它是一个错误的警告:没有串行版本是最安全的选择,因为JVM在启动时计算一个唯一的警告(类似于类的散列)在显式添加它时,如果并且仅当您对代码进行了不兼容的更改时,您需要注意更新它


因此,如果您不关心这个问题,最好避免使用该值(这样一来,它只与兼容的版本兼容,当然是兼容的,但有一些误报:它认为不兼容,但事实上是兼容的),而不是设置一个固定的值(在我的情况下,可能是这样)忘记在需要时更新,这会导致实际的有效性错误(错误否定:它认为它是兼容的,但它不是)。

看起来开箱即用的NetBeans不支持该功能,但插件支持

请看一看


,和

在Netbeans中禁用这些警告:

  • 打开:工具->选项
  • 打开:编辑器->提示选项卡
  • 选择语言:Java
  • 取消选中标准Javac警告->序列化
  • 我还必须清除~/.netbeans/6.8/var/cache并重新启动netbeans以清除任务列表中的警告。

    (对于现在询问相同问题的用户)
    我正在使用nb7.4,发现了这个从nb6.5到nb7.4的插件

    我在nb7.4中测试了它,效果很好。 有关服务版本id的含义,请参见

    如果显式添加它,则可以在不更改uid的情况下对类进行所有更改,直到您的类未序列化并存储在某个位置: 如果创建类A,则将其序列化
    结束,然后将其存储在数据库中
    结束,然后更改类别A,使其与旧类别A不再兼容,
    当有人试图将序列化对象从最后一个类A加载到新的类A时,他可能会遇到问题


    当您更改类A并使其与上一个类A不兼容时,您必须更改uid,因此如果有人尝试加载它,则会出现InvalidClassExceptions。

    这取决于您如何使用序列化。如果您要跨不同的JVM(即从一个JVM到另一个JVM)序列化类,则可能会导致不稳定性。看起来像这样这种方法在我当前的项目中效果最好,但我没有看到一个地方可以在任何地方都关闭此警告(而且有很多抑制警告注释似乎很糟糕)在NetBeans中。不使用版本可能会导致两个jvm之间或不同操作系统之间,或不同java版本和其他实际情况之间的序列化中断,因此,如果您需要在不同系统上共享java对象,强烈建议您使用版本id,即使保存对象,关闭系统然后更新jvm也可能导致尽管这是一个很好的建议,我还是决定忽略这个警告,因为在这个项目上没有那么重要。我只是不喜欢出现这个警告。