Ben*_*Ben 68 c# java program-entry-point
我对此有点新意,请耐心等待.我目前正在学习C#和Java,它们的一个相似之处在于主要功能需要封装在一个类中.例如
public class HelloWorld {
public static void main(String[] args) {
// Some Code
}
}
Run Code Online (Sandbox Code Playgroud)
现在我明白,当你运行程序时,main通常是"入口点".所以基本上,你的程序将在主函数的任何地方开始执行.但我相信在两种语言中,您可以在多个类中拥有多个主要功能.因此,当我编译一个具有多个主要功能的项目时,"入口点"在哪里?编译器如何知道从哪里开始?
Cod*_*ice 58
在Java中,计算机确定实际执行程序时的"入口点",而不是在编译时.例如,从命令行
java MyClass
Run Code Online (Sandbox Code Playgroud)
搜索main()在MyClass.所有其他main()功能都被忽略.
如果您使用的是IDE,则可以设置包含main()要使用的功能的类.
MSt*_*odd 55
在.NET中,您可以定义哪个类包含要在编译时使用的Main方法.
http://msdn.microsoft.com/en-us/library/x3eht538.aspx
在Java中,如果要捆绑到jar,则可以在jar的清单中定义入口点.
http://docs.oracle.com/javase/tutorial/deployment/jar/appman.html
Cos*_*ter 12
主类是一个特殊的类,原因只有一个:运行Java虚拟机时,该函数就是JVM调用的函数.它基本上与任何其他函数一样,实际上您可以从另一个类调用一个类的主函数.
当您编译具有多个类的项目时,您告诉JVM使用您要使用的主类来运行该类,如下所示:
java SomeClass
Run Code Online (Sandbox Code Playgroud)
它将运行SomeClass的main方法,假设SomeClass已编译,并且相应的编译文件位于类路径中.(这是你必须与你的特定操作系统一起工作的东西,但我认为-cp选项通常指定一个类路径).所以这:
java -cp /home/MyName Someclass
Run Code Online (Sandbox Code Playgroud)
将在目录/ home/MyName中运行SomeClass的main函数
在C#中,使用/main:编译器选项指定入口点.
请考虑以下包含两个main()函数的代码:
namespace Application {
class ClassOne {
static void main () {
// Code here
}
}
class ClassTwo {
static void main () {
// Code here
}
}
}
Run Code Online (Sandbox Code Playgroud)
要ClassOne.main()用作入口点,您可以在编译时指定以下内容:
csc /main:Application.ClassOne hello.cs
Run Code Online (Sandbox Code Playgroud)
小智 7
在Java中,正如其他人指出的那样,在运行java命令时定义包含main函数的类.
但是你也可以构建一个可以运行的可执行jar java -jar my.jar.在这种情况下,您需要在jar MANIFEST.MF中的文件夹META-INF中调用清单文件.在此文件中,使用以下语句指定包含main函数的类:Main-Class: YourClass.
对于多个主函数,入口点可以通过以下方式声明:
在Visual Studio开发环境中设置此编译器选项
打开项目的"属性"页面.
单击"应用程序"属性页.
修改"启动"对象属性.
参考:http://msdn.microsoft.com/en-us/library/x3eht538.aspx
| 归档时间: |
|
| 查看次数: |
22024 次 |
| 最近记录: |