我刚刚开始学习Scala,我正在遵循的许多教程都使用了一种main方法的不同表示形式的组合.除了熟悉的主要方法; 还有使用特征App或Application.它似乎Application已被弃用,不推荐使用,但我找不到任何有关这些定义入口点的方法的信息.
所以,我想知道是否有人可以向我解释:
App和Application工作如何?Application不再推荐这个App特性,这个特性有什么不同呢?App来启动我的程序?这两种方法有什么区别?考虑使用C程序(请参阅此处的实时演示).
const int main = 195;
Run Code Online (Sandbox Code Playgroud)
我知道在现实世界中没有程序员编写这样的代码,因为它没有任何用处,也没有任何意义.但是当我const从程序上方删除关键字时,它会立即导致分段错误.为什么?我很想知道这背后的原因.
GCC 4.8.2在编译时会发出以下警告.
警告:'main'通常是一个函数[-Wmain]
Run Code Online (Sandbox Code Playgroud)const int main = 195; ^
为什么const关键字的存在和缺失会对程序的行为产生影响?
为什么我们需要使用int main而不是void main在C++中?
我正在使用Java Maven程序而且我不知道要输入什么<mainClass>.我已经根据众多 stackoverflow问题尝试了各种各样的东西,但他们没有解决错误.
每次说:
Maven Error: Could not find or load main class ...
Run Code Online (Sandbox Code Playgroud)
我在里面写了这个pom.xml(减去???)
<build>
...
<plugins>
...
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<descriptors>
<descriptor>src/main/assembly/jar-with-dependencies.xml</descriptor>
</descriptors>
<archive>
<manifest>
<mainClass> ??? </mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
...
</build>
Run Code Online (Sandbox Code Playgroud)
我该如何解决这些错误?
我想测试一下我的主程序包中包含的一些函数,但我的测试似乎无法访问这些函数.
我的示例main.go文件如下所示:
package main
import (
"log"
)
func main() {
log.Printf(foo())
}
func foo() string {
return "Foo"
}
Run Code Online (Sandbox Code Playgroud)
和我的main_test.go文件看起来像:
package main
import (
"testing"
)
func Foo(t testing.T) {
t.Error(foo())
}
Run Code Online (Sandbox Code Playgroud)
当我跑步时,go test main_test.go我得到了
# command-line-arguments
.\main_test.go:8: undefined: foo
FAIL command-line-arguments [build failed]
Run Code Online (Sandbox Code Playgroud)
据我所知,即使我将测试文件移到别处并尝试从main.go文件导入,我也无法导入它,因为它是package main.
构建此类测试的正确方法是什么?我应该从main包中删除所有内容,除了一个简单的主函数来运行所有内容然后在自己的包中测试函数,还是有办法让我在测试期间从主文件中调用这些函数?
我被问到一个面试问题,将C或C++程序的入口点更改main()为任何其他函数.这怎么可能?
我试图熟悉Kotlin在我的Android应用程序中使用.首先,我想尝试一些简单的kotlin示例,只是为了熟悉kotlin的语法.
我用Main.ktandroid方法在我的android项目中创建了一个类.
fun main(args: Array<String>) {
println("Hello World"); }
Run Code Online (Sandbox Code Playgroud)
Android工作室向我展示了main方法左边的kotlin图标,当我点击这个图标时,它显示了以下三个选项:
1)运行Mainkt
2)调试Mainkt
3)运行Mainkt覆盖范围
我选择了第一个,但它抛出了我
Exception in thread "main" java.lang.ClassNotFoundException: com.vikalp.kotlin.MainKt
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.java:107)
Run Code Online (Sandbox Code Playgroud)
我遇到了这么小的问题.如果你们中的任何人遇到过这样的问题以及解决方案是什么,请告诉我.
我创建了一个可执行jar并使用commons-cli为用户提供了在启动客户端时指定命令行参数的能力.一切正常.但是,当我打印jar的用法语句时,我想显示以下内容:
usage: java -jar myprog.jar <options> <file>
--help Display the help message
--debug Enable debugging
....
Run Code Online (Sandbox Code Playgroud)
使用commons-cli可以轻松打印所有选项.然而,"使用"线是头部刮擦.我似乎无法找到从args []获取传递给应用程序的"myprog.jar"名称的方法.
这有什么简单的方法吗?我可以使用一个非常复杂的方法从我的类的类加载器返回跟踪并找出它是否包含在jar中,但这似乎是一个相当难看的答案,应该是一个非常简单的问题.
private String getPath(Class cls) {
String cn = cls.getName();
String rn = cn.replace('.', '/') + ".class";
String path =
getClass().getClassLoader().getResource(rn).getPath();
int ix = path.indexOf("!");
if(ix >= 0) {
return path.substring(0, ix);
} else {
return path;
}
}
Run Code Online (Sandbox Code Playgroud) Java程序中是否存在两种主要方法?只有他们的论点不同,如:
public static void main(String[] args)
Run Code Online (Sandbox Code Playgroud)
第二个可以
public static void main(StringSecond[] args)
Run Code Online (Sandbox Code Playgroud)
如果可能,哪个方法将用作入口点?怎么识别这个?请帮忙.
我正在研究一个非常大的应用程序和我的技术主管,我没有看到某些事情的一致看法.
其中一个是关于控制台应用程序.这些应用程序正从shell脚本移植到C#.其中一些脚本相当大(转换后有300-400行代码),并执行I/O,电子邮件和数据库访问等操作.
对于每个脚本,我创建了一个类.每个类都有一个Run方法,可以调用其中的任何方法/操作.在Program.cs/main中,我创建了一个所述类的对象并调用Run.Program.cs包含4-5行代码.干净简单.
我的技术主管希望摆脱脚本类,只需将所有内容都放在program.cs的main方法中.他的理由是它的方式太混乱了.
因为类不再可以重复使用/打包成类库而不必使用main方法,所以不得不这样做.
单元测试似乎没有受到影响,因为你可以自己实例化Program.cs,但是再次....这感觉很笨拙.按照我没有看到的方式做任何好处?我的方式有什么好处吗?在主方法中处理大型应用程序和内容时是否有一般做法?
感谢您的时间.