在哪里使用Java代码?无法发送.jar文件

在哪里使用Java代码?无法发送.jar文件,java,Java,为这个问题的一般性道歉 我已经学习Java几个月了,我已经创建了一些简单的项目,它们具有一些功能。我想把项目发给一个朋友,但我遇到了无数的错误和挣扎。传递.jar文件会导致在尝试打开Main class not found时出现错误 我尝试使用第三方软件将.jar文件包装成.exe文件,但同样的错误仍然存在 除此之外,我确信,通过第三方软件将包装成.exe文件的.jar文件传递给他人并不是Java的用意。我读过两本关于Java的书,它们都谈到了语言的结构,但我不知道我应该在哪里使用这些代码,因为

为这个问题的一般性道歉

我已经学习Java几个月了,我已经创建了一些简单的项目,它们具有一些功能。我想把项目发给一个朋友,但我遇到了无数的错误和挣扎。传递.jar文件会导致在尝试打开Main class not found时出现错误

我尝试使用第三方软件将.jar文件包装成.exe文件,但同样的错误仍然存在

除此之外,我确信,通过第三方软件将包装成.exe文件的.jar文件传递给他人并不是Java的用意。我读过两本关于Java的书,它们都谈到了语言的结构,但我不知道我应该在哪里使用这些代码,因为很明显,这些代码不打算以文件格式传递


这是一种服务器编程语言吗?主要用于网站后端?我不确定人们会在哪里使用Java编写的代码。

我建议您花些时间使用Java。Java程序基本上在虚拟机上运行,而不是直接在物理机上运行。Java程序被编译成*.class文件,而*.class的集合通常被捆绑成一个*.jar文件

如果要运行java程序,一种常见的方法是执行java虚拟机运行时JRE,并指定要加载到类路径中的jar包,例如:

java -jar /path/to/my.jar
您的jar文件必须正确打包,以便指示主类(如果有的话)是什么


将jar打包到exe是可能的,但不是最佳实践。Java范型是一种一次编写和编译的模式,在任何地方都可以运行。

我建议您花些时间使用它。Java程序基本上在虚拟机上运行,而不是直接在物理机上运行。Java程序被编译成*.class文件,而*.class的集合通常被捆绑成一个*.jar文件

如果要运行java程序,一种常见的方法是执行java虚拟机运行时JRE,并指定要加载到类路径中的jar包,例如:

java -jar /path/to/my.jar
您的jar文件必须正确打包,以便指示主类(如果有的话)是什么


将jar打包到exe是可能的,但不是最佳实践。Java范例是一种“一次编写和编译”,可以在任何地方运行。

如果希望有人能够运行JAR文件,您需要将JAR文件创建为可执行JAR文件。这就是发送Java可执行文件的方式。查看此处了解更多信息:


如果希望有人能够运行JAR文件,则需要将其创建为可执行JAR文件。这就是发送Java可执行文件的方式。查看此处了解更多信息:


您应该构建一个可执行的jar


检查并执行。

您应该构建一个可执行的jar


检查并。

要快速获得答案,库被捆绑在jar中,然后被添加到另一个应用程序的类路径中

假设你发明了一种比其他算法都快的排序算法。您可以将少量类捆绑到一个jar中,它基本上只是一个包含编译的.class文件的zip文件

现在,您的朋友需要对一些数据进行排序,并希望使用您的类。他会编写代码,在.java文件的顶部使用import导入您的类,然后在代码中使用它们。当他将.java文件编译成.class文件时,他会将您的jar添加到他的类路径中。Eclipse/netbeans可以为您设置此选项,或者如果您从命令行运行javac,它将如下所示:

javac ... -cp "fastsorting.jar" ...

有时,在现实世界中,很少有人有一个真正成熟的程序,准备运行的JAR。我很少这样说,因为JAR不是最常见的软件分发方式。更流行的是作为web服务或通过网站上的小程序。在本例中,jar的清单文件(只是一个告诉java关于这个jar的信息的文本文件)将有一个主类,当通过java调用jar时,该类将运行。

为了快速回答,库被捆绑在jar中,然后被添加到另一个应用程序的类路径中

假设你发明了一种比其他算法都快的排序算法。您可以将少量类捆绑到一个jar中,它基本上只是一个包含编译的.class文件的zip文件

现在,您的朋友需要对一些数据进行排序,并希望使用您的类。他会编写代码,在.java文件的顶部使用import导入您的类,然后在代码中使用它们。当他将.java文件编译成.class文件时,他会将您的jar添加到他的类路径中。Eclipse/netbeans可以为您设置此选项,或者如果您从命令行运行javac,它将如下所示:

javac ... -cp "fastsorting.jar" ...
有时候,在现实世界中,很少有人会有一个真正成熟的程序JAR 跑我很少这样说,因为JAR不是最常见的软件分发方式。更流行的是作为web服务或通过网站上的小程序。在本例中,jar的清单文件(只是一个告诉java有关该jar的信息的文本文件)将有一个主类,该类在通过java调用jar时运行。

来自Oracle:

如果将应用程序捆绑在JAR文件中,则需要某种方法来指示JAR文件中的哪个类是应用程序的入口点。您可以在清单中的主类标头中提供此信息,其一般形式如下:

主类:类名 值classname是作为应用程序入口点的类的名称

回想一下,入口点是一个具有签名public static void mainString[]args的方法的类

在清单中设置主类头之后,使用以下形式的java命令运行JAR文件:

java-jar名称 将执行主类标头中指定的类的main方法

使用JAR工具设置入口点:

JDK 6中引入的“entrypoint”的“e”标志创建或重写清单的主类属性。它可以在创建或更新jar文件时使用。使用它可以指定应用程序入口点,而无需编辑或创建清单文件。 例如,此命令创建app.jar,其中清单中的主类属性值设置为MyApp:

jar cfe app.jar MyApp MyApp.class 您可以通过运行以下命令直接调用此应用程序:

java-jarapp.jar 如果入口点类名在包中,则可以使用“.”点字符作为分隔符。例如,如果Main.class位于名为foo的包中,则可以通过以下方式指定入口点:

jar cfe Main.jar foo.Main foo/Main.class

来自Oracle:

如果将应用程序捆绑在JAR文件中,则需要某种方法来指示JAR文件中的哪个类是应用程序的入口点。您可以在清单中的主类标头中提供此信息,其一般形式如下:

主类:类名 值classname是作为应用程序入口点的类的名称

回想一下,入口点是一个具有签名public static void mainString[]args的方法的类

在清单中设置主类头之后,使用以下形式的java命令运行JAR文件:

java-jar名称 将执行主类标头中指定的类的main方法

使用JAR工具设置入口点:

JDK 6中引入的“entrypoint”的“e”标志创建或重写清单的主类属性。它可以在创建或更新jar文件时使用。使用它可以指定应用程序入口点,而无需编辑或创建清单文件。 例如,此命令创建app.jar,其中清单中的主类属性值设置为MyApp:

jar cfe app.jar MyApp MyApp.class 您可以通过运行以下命令直接调用此应用程序:

java-jarapp.jar 如果入口点类名在包中,则可以使用“.”点字符作为分隔符。例如,如果Main.class位于名为foo的包中,则可以通过以下方式指定入口点:

jar cfe Main.jar foo.Main foo/Main.class


除此之外,我确信,通过第三方软件将包装成.exe文件的.jar文件传递给他人并不是Java的用意。很好的观察。我建议,尽管这些NoClassDefFoundErrors需要先排序。我建议你就此提出一个问题。投票关闭这个主题。是的,Java代码通常在服务器上运行。但是,您也可以编写可以作为jar文件执行的独立java程序。关键是确保罐子包装正确。如果您正在使用Java 7编写程序,不要期望您的任何朋友能够使用它们。部署工具包scrpt可能重复@jahroy The deploy Java.js,这有助于确保最终用户拥有运行基于JWS的应用程序或小程序所需的适当最低Java。从技术上讲,它也可以直接链接到可执行Jar,尽管最终用户最好不要从网络上的随机链接运行“无安全管理器”可执行Jar;除此之外,我确信通过第三方软件传递包装成.exe文件的.jar文件并不是Java的用途。很好的观察。我建议,尽管这些NoClassDefFoundErrors需要先排序。我建议你就此提出一个问题。投票关闭这个主题。是的,Java代码通常在服务器上运行。但是,您也可以编写独立的java程序 hat可以作为jar文件执行。关键是确保罐子包装正确。如果您正在使用Java 7编写程序,不要期望您的任何朋友能够使用它们。部署工具包scrpt可能重复@jahroy The deploy Java.js,这有助于确保最终用户拥有运行基于JWS的应用程序或小程序所需的适当最低Java。从技术上讲,它也可以直接链接到可执行Jar,尽管最终用户最好不要从网络上的随机链接运行“无安全管理器”可执行Jar;可能重复的