NetBeans中找不到主类

时间:2013-12-16 00:49:05

标签: java netbeans runtime-error netbeans-7

我一直在为我的班级编程工作。我正在使用NetBeans。我完成了我的项目并且工作正常。当我尝试运行它时,我收到一条消息“没有找到主要类”。以下是一些主要的代码:

package luisrp3;
import java.io.FileNotFoundException;
import java.io.PrintStream;

public class LuisRp3 {

public static void main(String[] args) throws FileNotFoundException  {

    java.io.File newFile = new java.io.File("LuisRamosp4.txt");

    if (newFile.exists()) {
        newFile.delete();
    }

    System.setOut(new PrintStream(newFile));

    Guitar guitar = new Guitar(); 

之前我发布了这个,但有几个问题。我已经修复了其他人,现在只剩下这一个了。任何建议将不胜感激。

15 个答案:

答案 0 :(得分:28)

  1. 右键单击项目资源管理器中的项目
  2. 点击属性
  3. 点击“运行”
  4. 确保您的主类是您想要成为切入点的主类。 (确保使用完全限定名称,即mypackage.MyClass)
  5. 单击“确定”。
  6. 运行项目:)
  7. 如果您只想运行该文件,请右键单击包浏览器中的类,然后单击“运行文件”或( Alt + R F )或( Shift + F6

答案 1 :(得分:8)

此外,对于那些有一些稍微不同的问题的人,Netbeans在从#34;主要类对话窗口"进行浏览时无法找到该类。

可能是您的主要方法确实具有正确的签名。在我的情况下,我忘记了args。

例如: public static void main(String [] args)

修饰符public和static可以按任意顺序编写(public static或static public),但约定是使用public static,如上所示。

Args:您可以根据需要为参数命名,但大多数程序员选择" args"或" argv"。

在这里阅读更多内容: http://docs.oracle.com/javase/tutorial/getStarted/application/

答案 2 :(得分:2)

我在Eclipse中遇到了同样的问题,所以也许我所做的解决它可以帮到你。 在项目属性中,我必须将启动配置设置为包含main方法的文件(我不知道为什么它没有自动设置为正确的文件)。

答案 3 :(得分:2)

在项目属性中的“运行”选项卡下,指定主类。 此外,要避免此问题,您需要在创建新项目期间选中“创建主类”。在属性中指定主类应始终有效,但如果在极少数情况下它不起作用,则可以通过重新创建项目来解决问题,如果未选中,则不要忘记选中“创建主类”。

答案 4 :(得分:2)

在Netbeans中创建新项目 - Maven - Java应用程序时 IDE无法识别第一类条目上的Main类。 (在下面的第8步中,我们看不到任何课程。)

首先创建泛型类,然后创建Main类,Netbeans正在注册Main类,可以运行和调试应用程序。

对我有用的步骤:

  1. 创建新项目 - Maven - Java应用程序 (已创建项目: mytest ;已创建包: com.me.test
  2. 右键单击包: com.me.test
  3. 新> Java类>将其命名为“无论如何”。你想要
  4. 右键单击包: com.me.test
  5. 新> Java主类>命名为:' Main ' (必须是' Main ')
  6. 右键单击Project mytest
  7. 点击“属性”
  8. 点击“运行”>旁边的主要类别'文本框:>浏览
  9. 您应该看到: com.me.test.Main
  10. 选择它并单击"选择主类"
  11. 希望这也适用于其他人。

答案 5 :(得分:1)

如果您的代码完全忘记关闭主要方法

其他一切听起来都不错

public class LuisRp3 {

public static void main(String[] args) throws FileNotFoundException  {

    java.io.File newFile = new java.io.File("LuisRamosp4.txt");

    if (newFile.exists()) {
        newFile.delete();
    }

    System.setOut(new PrintStream(newFile));

    Guitar guitar = new Guitar(); 
}}

试试

答案 6 :(得分:1)

如果添加结束括号的建议有效,我建议在代码中添加缩进,以便每个右括号分开,即:

public class LuisRp3 {

    public static void main(String[] args) throws FileNotFoundException  {

    // stuff

    }
}

这有助于提高可读性。

另一方面,如果您忘记复制代码中的结束括号,或者上述建议不起作用:打开配置并查看是否可以手动设置主类。我担心我没有使用过很多NetBeans,所以我无法帮助你选择那个选项。我最好的猜测是“运行配置”,或类似的东西。

修改:如果添加结束括号不起作用,请参阅peeskillet's answer

答案 7 :(得分:1)

在这种情况下可能会出现一些问题(假设您的示例后面有代码,并且不会让您的代码不加括号)。

首先,如果您正在运行整个项目而不仅仅是当前文件,请确保您的项目是主项目,并且项目的主类设置为正确的文件。

否则,我看到同学的代码很好,但他们仍然遇到同样的问题。有时,在Netbeans中,一个简单的解决方法是:

  1. 复制当前代码(或将其备份到其他位置)
  2. 删除当前文件
  3. 在项目中创建一个新的主类(您可以将其命名为旧类)
  4. 将代码粘贴回
  5. 如果这不起作用,则尝试清除Netbeans缓存,如果所有其他方法都失败,那么只需执行干净的卸载并重新安装Netbeans。

答案 8 :(得分:1)

我在准备要发布的过程中所建立的联系对我来说确实是一劳永逸。在您看到连接之前,Main Class:框中的内容并不完全清楚。 (请注意,包含main方法的类不一定要命名为Main,但是main方法不能具有其他名称。)

enter image description here

答案 9 :(得分:0)

您需要在代码的末尾添加}}

答案 10 :(得分:0)

您需要将主类重命名为Main,它不能是其他任何内容。

您创建的包和类的文件数无关紧要,您必须为主类Main命名。

这就是全部。

答案 11 :(得分:0)

在工具栏中搜索按箭头并选择自定义... 它将打开项目属性。在类别中选择RUN。 寻找主类。 清除所有Main Class字符并键入您的类名。 单击“确定”。 并再次运行。 问题解决了。

答案 12 :(得分:0)

我还经历过Netbeans向我抱怨“找不到主类”。问题出在我以前知道的一个项目上,但是当我在另一台PC上尝试时失败了。

我的具体失败原因可能与OP不同,但是我仍然会分享我在调试过程中所学的知识,以防万一这些见解可帮助任何人找出与该主题相关的独特问题。

我了解到,启动NetBeans后,它应该执行一个名为“扫描项目...”的步骤。 Scanning projects...

在此阶段之前,您应该注意到,其中包含任何带有main()方法的.java文件都将显示在“项目”窗格中,其图标如下所示(无箭头):

icon before scanning

此扫描阶段完成后,如果在文件中发现main()方法,则该文件的图标将更改为此(带有箭头):

icon after scanning

因此,在我的系统上,“扫描项目...”步骤似乎失败了,而是停留在“打开项目”步骤中。

我还注意到右下角有一个红色小图标,提示该问题使我感到不适:

Unexpected exception

Unexpected Exception
java.lang.ExceptionInInitializerError

点击该链接可向我显示该错误的更多详细信息:

java.security.NoSuchAlgorithmException: MD5 MessageDigest not available
    at sun.security.jca.GetInstance.getInstance(GetInstance.java:159)
    at java.security.Security.getImpl(Security.java:695)
    at java.security.MessageDigest.getInstance(MessageDigest.java:167)
    at org.apache.lucene.store.FSDirectory.<clinit>(FSDirectory.java:113)
Caused: java.lang.RuntimeException
    at org.apache.lucene.store.FSDirectory.<clinit>(FSDirectory.java:115)
Caused: java.lang.ExceptionInInitializerError
    at org.netbeans.modules.parsing.lucene.LuceneIndex$DirCache.createFSDirectory(LuceneIndex.java:839)

提到“ java.security”时,使我想起了我用机器的“ java.security”文件(具体来说,我正在执行this thread的Salvador Valencia的步骤,但操作不正确并损坏了“ java.security”:))

一旦我修复了对“ java.security”文件造成的损坏,NetBeans的“扫描项目...”步骤又开始起作用,绿色的小箭头再次出现在文件上,我再也听不到“未找到主要类别”问题。

答案 13 :(得分:-1)

按下绿色箭头(运行)左侧的锤子,清洁程序&amp;建立项目。 按绿色箭头。 选择主类。

希望它适用于你。

答案 14 :(得分:-2)

确保访问修饰符公开而非私有。我一直有这个问题,这总是我的问题。

public static void main(String [] args)