【问题标题】:Cannot "Run File" from src\test folder -> main class not found or could not be loaded无法从 src\test 文件夹“运行文件”-> 找不到或无法加载主类
【发布时间】:2012-10-16 13:33:34
【问题描述】:

我只想在我的测试文件夹中运行一个 .java 文件以进行调试和测试。 如果我在我的主文件夹中运行它,一切都很好, 如果我在我的测试文件夹中运行它,我会收到一个错误:

我的项目结构:

src
|_____ main
      |_____ java -> MainSrc.java
|_____ test
      |_____ java -> MainTest.java

MainSrc / MainTest.java 包含:

public class MainSrc / MainTest
{
    public static void main(String[] args)
    {
        System.out.println("test");
    }
}

现在,如果我在 netbeans 中右键单击并点击“运行文件”:

main\java\MainSrc.java

run:
test
BUILD SUCCESSFUL (total time: 0 seconds)

测试\java\MainTest.java

cd C:\Java\MainTest; "JAVA_HOME=C:\\Program Files (x86)\\Java\\jdk1.7.0_02" 
"\"C:\\Program Files\\NetBeans 7.2\\java\\maven\\bin\\mvn.bat\"" 
"-Dexec.args=-classpath %classpath Test" 
"-Dexec.executable=C:\\Program Files (x86)\\Java\\jdk1.7.0_02\\bin\\java.exe" 
-Dexec.classpathScope=test --offline --errors process-classes org.codehaus.mojo:exec-maven-plugin:1.2:exec
Error stacktraces are turned on.
Scanning for projects...

------------------------------------------------------------------------
Building Test 1.0
------------------------------------------------------------------------

[resources:resources]
[debug] execute contextualize
Using 'windows-1252' encoding to copy filtered resources.
Copying 0 resource

[compiler:compile]
Nothing to compile - all classes are up to date

[exec:exec]
Error: could not find or load main class MainTest
------------------------------------------------------------------------
BUILD FAILURE

我的操作是(也尝试过 classPathScope=test):

    <action>
        <actionName>run</actionName>
        <goals>
            <goal>process-classes</goal>
            <goal>org.codehaus.mojo:exec-maven-plugin:1.2:exec</goal>
        </goals>
        <properties>
            <exec.args>-classpath %classpath MainTest</exec.args>
            <exec.executable>java</exec.executable>
            <exec.classpathScope>${classPathScope}</exec.classpathScope>
            <exec.workingdir>D:\Dropbox\Java\Test Automation Selenium</exec.workingdir>
        </properties>
    </action>

我不是 Java 专业人士,我大部分时间都在谷歌上搜索过,但我找不到解决方案。 我也不明白为什么它不起作用。我试图从我的 默认包,但是ofc是不可能的......

请帮忙? :) 谢谢

【问题讨论】:

  • 默认的 netbeans 行为是从测试目录中的源代码执行 JUnit 测试。不过,这看起来像一个 Maven 项目,所以不确定它的预期。我的猜测是默认情况下它是相似的。这种设置还有一个问题,在同一个包中的类路径中有两个不同的类,同名。此外,它们都在默认包中,这不是一件好事,因为它们永远不会被其他类导入。
  • 谢谢,我做了一个不好的例子,在我的项目中,一个是调用 MainTest,另一个是 MainSrc。为了简单起见,我只是在这里重命名了它们,我更改了示例。这是一个 maven 项目,但我搜索了一下,似乎很多用户在运行“运行文件”(maven:exec)时没有问题。

标签: java testing maven netbeans exec


【解决方案1】:

这听起来像是神奇的“找不到主类”异常(如果没有,请见谅!)。

我已经在 NB 用户邮件列表上看到过很多次了,而且我每年也遇到一次这个神奇的例外。我找到了gathered the solutions,这通常可以帮助我修复这些异常/错误(列表基于 NB 6.8 的时间,但可能仍然存在)。

  • 确保您有一个包含主要方法的公共类
  • 这个类必须有一个明确定义的 main 方法:“public static void main(String[] args) { }”
  • 您已经使用正确的类设置了项目配置:项目属性>运行>主类(可能只是再次设置它,以便写入项目属性文件 再次)
  • 尝试重新构建项目:菜单 > 运行 > 清理并构建主项目
  • 仍然没有成功?尝试重命名类 (Foo -> Foo1) 并将其重命名为 (Foo1 -> Foo)。这应该使该文件的 NetBeans 缓存无效(假设 - 我不是 NetBeans 开发人员)。
  • 还是没有成功??您可能必须通过删除目录“.netbeans\6.8\var\cache”来清除 NetBeans 缓存(当然,6.8 可能会根据您的 NetBeans 版本而有所不同)。在删除缓存之前关闭 NetBeans - 下一次启动可能需要一些时间,因为 NB 很可能需要再次扫描您的代码。
  • 还是没有运气?您可能需要咨询 NetBeans 用户论坛或 nbusers-Mailinglist(请保持友好、耐心并以其他人能够提供帮助的方式报告错误)。

【讨论】:

  • 我的问题是我想用maven的“运行文件”功能,我从日志文件中发现.class不存在,所以它没有编译mvn test-compile,因为我只执行 mvn 进程类。我不知道如何在 nbactions.xml 中设置一个动作来包含两者,猜这是不可能的。
  • 哦,抱歉,我还没有遇到 maven 的此类问题 :-/ 所以我的建议对你没有多大帮助
猜你喜欢
  • 2017-02-07
  • 2020-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-30
  • 2014-01-07
  • 1970-01-01
  • 2019-07-21
相关资源
最近更新 更多