两个问题
1)将Java项目导出为JAR文件时,应用程序如何知道包中的哪个类首先运行?我的applicatino特别要求userInterface.java文件在CommonDenom.java文件之前运行。
2)运行Java文件时,出现错误消息“无法启动Java JAR文件“ commonDenom.jar”。请在控制台中查看可能的消息。”
我从哪里开始弄清楚这一点?我检查了控制台,但弹出错误消息时似乎没有注册任何东西。
package commonDenom;
import java.util.Arrays;
import java.util.Scanner;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class UserInterface {
Shell shell;
Button btnNext;
Button btnDone;
Text input;
Text output;
static int count;
static int[] finalNums;
int[] nums = new int[1000];
public static void main(String[] args){
Display display = new Display();
new UserInterface(display);
display.dispose();
}
public UserInterface(Display display){
shell = new Shell(display);
shell.setSize(220,350);
shell.open();
input = new Text(shell, SWT.SINGLE);
input.setBounds(10, 10, 100, 20);
btnNext = new Button(shell, SWT.PUSH);
btnNext.setBounds(10, 40, 100, 30);
btnNext.setText("Next");
nextPress();
btnDone = new Button(shell, SWT.PUSH);
btnDone.setBounds(10, 80, 100, 30);
btnDone.setText("Done");
donePress();
output = new Text(shell, SWT.SINGLE);
output.setBounds(10, 120, 200, 200);
while(!shell.isDisposed()){
if(!display.readAndDispatch()){
display.sleep();
}
}
}
public void nextPress(){
btnNext.addSelectionListener(new SelectionAdapter(){
int x = 0;
@Override
public void widgetSelected(SelectionEvent e) {
nums[x] = Integer.parseInt(input.getText());
System.out.println("nums[" + x + "]:" + nums[x]);
x++;
count++;
}
});
}
public void donePress(){
btnDone.addSelectionListener(new SelectionAdapter(){
@Override
public void widgetSelected(SelectionEvent e) {
finalNums = new int[count];
for(int i = 0; i < count; i++){
finalNums[i] = nums[i];
}
System.out.println("finalNums:" + Arrays.toString(finalNums));
commonDenom.compare();
if(commonDenom.getResult() == 0){
output.setText(Arrays.toString(finalNums) + "\nThese numbers do not have a \ncommon multiplier");
}
else{
output.setText(Arrays.toString(finalNums) + "\nResult:" + String.valueOf(commonDenom.getResult()));
}
}
});
}
public static int[] getNums(){
return finalNums;
}
}
Manifest.txt位置:/ Dropbox / workspace / commonDenom / bin
类位置:/ Dropbox / workspace / commonDenom / bin / commonDenom /
类名:
commonDenom.class
UserInterface.class
UserInterface$1.class (I didn't create this)
UserInterface$2.class (I didn't create this)
Manifest.txt内容(两个空白行):
Main-Class: commonDenom.UserInterface
jar tf CommonDenom.jar返回以下内容:
META-INF/
META-INF/MANIFEST.MF
Manifest.txt
commonDenom/
commonDenom/commonDenom.class
commonDenom/UserInterface$1.class
commonDenom/UserInterface$2.class
commonDenom/UserInterface.class
我建议先手动创建罐子。这将是一个很好的健全性测试,您将了解执行此操作所需的条件。步骤如下:
Manifest.txt
某个地方创建一个文件,比方说您的项目根目录。一行就足够了,像这样:Main-Class: commonDenom.UserInterface
确保文件以换行符结尾。默认情况下,Eclipse不会在文件末尾添加换行符。尾随空白行也可以。
转到Eclipse放置您的类文件的 父目录 。例如,在Maven项目中,这是target/classes
相对于项目根目录的。可能会改用Ant构建bin
。在你的榜样,这应该是一个包含目录commonDenom
(其中又包含构建产品:UserInterface.class
)
创建罐子:
jar cfm /tmp/somename.jar /path/to/Manifest.txt commonDenom
jar cfm /tmp/somename.jar /path/to/Manifest.txt *
这会将您的类文件树与指定的清单文件一起放入jar。
现在您应该可以运行该文件了。这可以作为您的基准测试。
您可以使用以下命令检查jar的内容:
jar tf /tmp/somename.jar
它应该打印如下内容:
META-INF/
META-INF/MANIFEST.MF
commonDenom/UserInterface.class
... # your other class files...
现在您已经完成了基准测试,您可以尝试使用Eclipse创建jar。如果Eclipse创建的jar不起作用,则可以查看其内容以查看与基准案例的区别,这将有助于您调试问题。
问题内容: 我正在尝试将Eclipse中的程序导出到jar文件。 在我的项目中,我添加了一些图片和PDF:s。当我导出到jar文件时,似乎只有main编译和导出了。 我的意愿是将所有内容都导出到jar文件中,因为那样的话,我想将其转换为可导出文件,例如.exe文件。 但是如何? 问题答案: 转到文件->导出-> JAR文件,您可以在其中选择“导出生成的类文件和源”,并确保选择了您的项目,并且该目录
问题内容: 我正在使用Eclipse并正在开发使用本地文件的Java应用程序。该文件在项目文件夹中的子文件夹中,称“ mydata / myfile.txt”。当我从eclipse运行应用程序时,一切正常,我打开一个FileInputStream并传递“ mydata / myfile.txt”作为名称,该文件为阅读就好了。但是,当我将应用程序导出为.jar并尝试运行它时,我得到的只是控制台中的F
我正在为我的项目创建一个使用Log4j2的JAR文件。我已将Log4j2 jar(用于核心和API)保存在“src”文件夹下的“lib”文件夹中。在Eclipse中,我导出了我的项目来创建JAR文件,并检查了JAR文件中是否包含/存在“lib”文件夹。 当我从eclipse中运行项目时,它运行得非常好,但是当我尝试通过cmd提示符执行jar时,我得到了以下错误: 导致错误的代码行(第20行)是:
问题内容: 如何使用Netbeans将Java项目导出到JAR?我找不到类似Eclipse中的选项。 问题答案: 您需要启用该选项 (但默认情况下启用此功能)
我有日蚀。 我可以用库导出jar(Export- 导出的libs放入projectName_libs文件夹。我可以为导出的库更改(在eclipse中)文件夹名吗?
我使用的是JRE 1.9.0(9.0.4+11)。我正在尝试创建一个可执行的JAR。在我用Maven导出到JAR并尝试启动它之后,我得到以下错误: 线程“JavaFX Application thread”java.lang.noClassDeFounderRror:com/sun/javafx/css/converters/sizeConverter在org.kordamp.ikonli.jav