2015-12-01 57 views
0

我想创建一个可以通过两种方式执行的java应用程序。 作为标准的独立应用程序,使用main(args []),并在任何使用jar的java应用程序中,作为外部库导入到其他应用程序。java独立执行的应用程序和一个jar库

我面临的问题是,我想在这两种情况下使用相同的功能。这是导致错误,因为我必须声明静态方法和变量作为独立应用程序时执行,但不是静态时,我需要从其他应用程序访问它。

我从来没有这样做过,所以我不是100%确定这是一个真正的问题。我过去的项目始终是静态的。 我在猜测我可以将我的代码放在两个类中,将主要方法放在另一个方法上,然后使用它作为一个单独的项目。 这是一个正确的方法吗?

+0

您不必创建两个相同的类,其中一个没有主类。它可以都在一个班上。您可以将代码添加到您的问题中,它可以帮助解决问题。您不应使用静态方法,创建类的实例,然后从实例中调用函数。 – adiaz004

+0

我不是故意使用两个相同的类。一个类将有我必须使用的主要方法和任何其他方法,并且这两种情况下共享的方法将在另一个类上,将它们称为对象 –

+0

哦,我明白了。看到下面duffymo的回答,他向你展示了如何接近它。 – adiaz004

回答

3

尝试这样写的:

public class DoubleDuty { 
    // This is the main method executed using java -jar 
    public static void main(String [] args) { 
     DoubleDuty dd = new DoubleDuty(); 
     dd.complexApplication(); 
    } 

    public void complexApplication() { 
     // This can be executed by others who import this JAR. 
    } 
} 
+0

所以我正在执行的方法是一个不同的类。对!没有想到这一点。 –

0

只有一个公共静态的main()是在你的新类需要。

主要总是静态的,但是你的类可以有实例。

您可以通过另一个类调用它:

public class Class1 { 
public static void main(String args[]) 
    { 
    System.out.println("Class1 BEGINS !"); 
    } 
} 

public class Class2 { 
    public static void main(String args[]) 
     { 
     Class1.main(args); 
     // or that 
     Class1.main(new String[0]); beware if inside main , you read args ! 
     } 

}

当您编译罐子作为独立的,起点设置为其他类

: 劳克配置=>设置1类或类2

+0

我不知道我关注。这将使用创建的jar从第三个类执行吗?从我知道的方法需要是非静态的,以便以这种方式加载。 –

+0

你的问题是有一个功能(主),独立使用,从另一个应用程序。最简单的答案是:是的:你可以从另一个地方打电话(只要选择好的课程开始,建立你的罐子时)。之后,您还可以使用子功能,... –

+0

我没有问过如何从其他课程开始主要。我想要的只是从终端执行时使用类的主要部分,并且能够使用其他类中的所有其他方法。没有尝试过,但我不认为这个解决方案将工作 –