新Java程序员在尝试运行Java程序时经常会遇到这些消息.
Error: Main method not found in class MyClass, please define the main method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
Run Code Online (Sandbox Code Playgroud)
Error: Main method is not static in class MyClass, please define the main method as:
public static void main(String[] args)
Run Code Online (Sandbox Code Playgroud)
Error: Main method must return a value of type void in class MyClass, please
define the main method as:
public static void main(String[] args)
Run Code Online (Sandbox Code Playgroud)
java.lang.NoSuchMethodError: main
Exception in thread "main"
Run Code Online (Sandbox Code Playgroud)
这是什么意思,什么可以导致它,以及应该怎么做才能解决它?
我在CodeGolf上看到了一段代码,它的目的是作为编译器炸弹,其中main声明为一个巨大的数组.我试过以下(非炸弹)版本:
int main[1] = { 0 };
Run Code Online (Sandbox Code Playgroud)
它似乎在Clang下编译得很好,并且在GCC下只有一个警告:
警告:'main'通常是一个函数[-Wmain]
结果二进制文件当然是垃圾.
但为什么它会编译呢?是否允许C规范?我认为相关的部分说:
5.1.2.2.1程序启动
程序启动时调用的函数名为main.该实现声明此函数没有原型.它应定义为返回类型为int且没有参数[...]或具有两个参数[...]或以某种其他实现定义的方式.
"其他一些实现定义的方式"是否包含全局数组?(在我看来,规范仍然指的是一个函数.)
如果没有,它是编译器扩展吗?或者工具链的一个功能,它可以用于其他目的,他们决定通过前端提供它?
以下是什么意思:
int main(void) {...}
Run Code Online (Sandbox Code Playgroud)
VS
int main() {...}
Run Code Online (Sandbox Code Playgroud)
?
我认为这int main() {...}意味着main不接收任何参数(来自命令行),但是:
int main(int argc, char *argv[])
Run Code Online (Sandbox Code Playgroud)
确实.
但这int main(void) {...} 意味着什么?什么是无效主张?
我看过这里,但这是一个不同的问题.
是的,我看过这篇文章:WinMain,main和Cll中的DllMain之间的区别
我现在知道它WINMAIN用于窗口应用程序和main()控制台.但阅读这篇文章并没有真正告诉我为什么到底有什么区别.
我的意思是将不同的电源功能分离到程序的开始是什么意思?是因为性能问题?或者它是什么?
char** argv和之间有什么区别char* argv[]?在int main(int argc, char** argv)和int main(int argc, char* argv[])?
它们是一样的吗?特别是第一部分没有[].
对于初学者,你如何能够很好地解释下面摘录中的含义String args[]和用法static?
class FirstApp {
public static void main(String[] args) {
...
}
}
Run Code Online (Sandbox Code Playgroud) 我读到C++标准禁止递归main(),但是g ++编译以下代码而没有抱怨:
int main()
{
main();
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以澄清这个吗?
如果我将此文件作为" ruby x.rb" 运行:
class X
end
x = X.new
Run Code Online (Sandbox Code Playgroud)
什么叫" X.new"?
它是一个对象/进程/等?
我正试图从其内部访问模块的数据__main__.py.
结构如下:
mymod/
__init__.py
__main__.py
Run Code Online (Sandbox Code Playgroud)
现在,如果我__init__.py像这样公开一个变量:
__all__ = ['foo']
foo = {'bar': 'baz'}
Run Code Online (Sandbox Code Playgroud)
如何访问foo从__main__.py?
我正在尝试使用加载jar
@echo off
java -jar Test.jar
pause
Run Code Online (Sandbox Code Playgroud)
随着的表现
Manifest-Version: 1.0
Main-Class: classes.TestClass
Run Code Online (Sandbox Code Playgroud)
在Jar目录中,当我提取它时,我可以清楚地看到classes\TestClass文件.
编辑:classes.TestClass确实有public static void main(String[] args).
包装减速度classes.TestClass是package classes;
但我仍然收到错误消息
Could not find or load main class classes.TestClass
Run Code Online (Sandbox Code Playgroud)
我经历过这个问题所能找到的一切,但似乎没有任何帮助.
我已经尝试编辑类路径,重做清单,安装新的JRE.
我还应该做什么?