Netbeans代码自动补全出问题了

5

我的NetBeans配置出了严重问题,我无法弄清楚是什么问题或如何修复它。我在Debian 7.4上运行NetBeans 8.0 C++。当我有以下代码时:

#include <cstdlib>
#include <vector>

using namespace std;

int main(int argc, char** argv)
{
    vector<int> h;
    h.push_back(4); //THIS LINE
    return 0;
}

Netbeans在我有注释的那一行下面用红色波浪线标出,并且说它无法解析标识符push_back。当我只输入时,建议框中出现了许多向量构造函数,但没有像push_back或erase这样的方法。我无法理解为什么会这样,因为一个小时前它还能工作,而且自那以后我也没有更改任何内容。当我打开我的一个项目时它就出问题了。
我已经尝试过打开和关闭项目、关闭和重新打开Netbeans、重新启动电脑和重新安装Netbeans,但都没有起作用。

这个问题是否也出现在其他的 stl 容器中? - mr5
不,看起来不是这样。集合和双端队列都可以正常工作。 - WanderingMathematician
3个回答

3
解决方案:发现OpenJDK 7存在缺陷。
为了解决这个问题,我在我的主目录中安装了Oracle JDK 1.7,并删除了三个目录~/.cache/netbeans~/.netbeans~/.nbi。我更新了文件~/netbeans-dev-201405050001/etc/netbeans.conf中的netbeans_jdkhome变量,将其设置为Oracle JDK 1.7的路径。
现在,C++ Netbeans解析器可以完美地工作,无论语句的复杂程度如何。
    Product Version: NetBeans IDE Dev (Build 201405050001)
    Java: 1.7.0_55; Java HotSpot(TM) Client VM 24.55-b03
    Runtime: Java(TM) SE Runtime Environment 1.7.0_55-b13
    System: Linux version 3.2.0-4-686-pae running on i386; UTF-8; fr_FR (nb)
    User directory: /home/admin/.netbeans/dev
    Cache directory: /home/admin/.cache/netbeans/dev

哇,无法想象需要多少时间才能解决那个问题...感谢分享!! - WanderingMathematician
谢谢你,@drowdemon。 - V. François
有没有关于OpenJDK问题的错误报告,我们可以跟进一下?(我主要想知道这个建议是否仍然适用于一年后。)我也看到有人建议只清除缓存就足够了(但对我今天早上的问题并没有起作用...) - Darren Cook

2

我也遇到了同样的问题(Netbeans 8.0 - Debian 7.4 - OpenJDK 7),为了解决这个问题,我在这个地址安装了NetBeans Development。


这很有帮助。然而,现在 Netbeans 也无法识别许多其他内容。例如,如果我有一个指向 vector 的指针,它将不会识别其中的任何方法。vector<vector<short>> *L = new vector<vector<short>>; (*L)[0].resize(1); 给我一个警告,说它无法解析基于模板的标识符 resize,并且如果我输入 . 然后按 ctrl-space,它不会出现在代码完成建议框中。 - WanderingMathematician
在这种情况下,您必须进行强制类型转换:static_cast<vector<short> &>((*v)[0]).resize(0); 或者 ((vector<short> &)((*v)[0]).resize(0);(这有助于解析器确定类型)。特别要记得包括引用,否则c++会创建临时对象。这非常重要,因为c++是强类型的,希望我能帮到您。 - V. François

0

使用Netbeans 8.2 JRE 1.8时,我在某些成员函数的向量代码完成上遇到了问题。 我修改了etc/netbeans.conf(JAVAHOME=) 我安装了JRE 1.7.9,问题得到解决。 (LINUX) 重新解析项目代码协助,一切正常!


我不确定这个解决方案是否适用于问题中的Netbeans 8.0版本。 - xpereta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接