【问题标题】:java filename reference compile errorjava文件名引用编译错误
【发布时间】:2018-06-25 09:36:42
【问题描述】:
package concurrencyTest;

public class concurrencyTest implements Runnable
{    
    @Override
    public void run() 
    {        System.out.println("Hello from a thread!");    }


    public static void main(String[] args)
     {
         concurrencyTest c = new concurrencyTest();
         Thread t = new Thread(c);
         t.start();
     }
}

嗨,我只是想让我的 java 并发测试运行。但是我收到了这个错误:

错误:在类 concurrencytest.ConcurrencyTest 中找不到主要方法,请 将主要方法定义为: 公共静态无效主要(字符串 [] 参数) 或者 JavaFX 应用程序类必须扩展 javafx.application.Application

我猜在某个地方,在 Java 程序需要运行的无数项目目录和子文件中,项目或类的名称被错误地以小写字母引用。我已经手动浏览了从根目录中找到的所有文件,并重命名了小写“concurrencytest”的任何实例。但似乎编译器仍然找到了对小写 concurrencytest 的引用,因此拒绝编译。知道这个引用可能在哪里吗?

我的根目录、源码目录、java代码文件都叫'concurrencyTest'

编辑 修改了这个问题的原始代码,在主方法定义中包含“静态”。这样做是必要的,但并没有解决问题。

【问题讨论】:

  • public void main 你确定错误不应该按字面意思解释吗?
  • 错误信息指出...请将main方法定义为:public static void main(String[] args)...。将其与您的主要方法签名进行比较指出您的签名不是static。只需将其设为static,错误就会失去其根源。
  • 请将main方法定义为:public static void main(String[] args)
  • 您发布的类名为concurrencyTest.concurrencyTest,这就是您需要将其大写以调用它的方式。

标签: java reference filenames


【解决方案1】:

你写错了main 定义。您应该将其更改如下:

public static void main(String[] args) {
    // ...
}

【讨论】:

  • 谢谢,我现在已将 static 关键字添加到 main 方法中。但是OP中描述的编译错误仍然存​​在。
  • @gristy 你是怎么运行这个的?
  • 我用的是netbeans 8.2 IDE,用F6编译
【解决方案2】:

我在元文件 ...\concurrencyTest\nbproject\project.properties 中找到了对“concurrencytest”的引用 所以我把它改成了'concurrencyTest'

此外,当 NetBeans 在其预期的类中找不到预期的主要方法时,它会打开一个“RunProject”窗口,其中列出了它找到的类中的主要方法。对我来说,它在“concurrencyTest”中找到了一个 main,所以我选择了它。

其中一项操作解决了问题,但不确定是哪一项。

【讨论】:

    猜你喜欢
    • 2018-05-19
    • 1970-01-01
    • 2020-10-17
    • 2014-04-05
    • 1970-01-01
    • 2016-05-14
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多