Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我可以尝试/捕获此错误吗?“;尝试打开jar时发生意外错误";_Java_Jar_Buildr - Fatal编程技术网

Java 我可以尝试/捕获此错误吗?“;尝试打开jar时发生意外错误";

Java 我可以尝试/捕获此错误吗?“;尝试打开jar时发生意外错误";,java,jar,buildr,Java,Jar,Buildr,我正在开发我的第一个非平凡Java应用程序。它是由一位同事开始的,但她没有时间完成,所以我接管了它。我决定使用Buildr作为我的构建工具: 首先,要从空目标目录开始,我需要: buildr clean 然后我: buildr --verbose compile 这给了我: (in /Users/cerhov/projects/openz/lofdg/buildr_fdg, development) Compiling buildr_fdg mkdir -p /Users/cerhov/pr

我正在开发我的第一个非平凡Java应用程序。它是由一位同事开始的,但她没有时间完成,所以我接管了它。我决定使用Buildr作为我的构建工具:

首先,要从空目标目录开始,我需要:

buildr clean
然后我:

buildr --verbose compile
这给了我:

(in /Users/cerhov/projects/openz/lofdg/buildr_fdg, development)
Compiling buildr_fdg
mkdir -p /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources
mkdir -p /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources/com/company
cp /Users/cerhov/projects/openz/lofdg/buildr_fdg/src/main/resources/com/company/students.txt /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources/com/company/students.txt
mkdir -p /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources/com/company
mkdir -p /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources/com
mkdir -p /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources/com/company
cp /Users/cerhov/projects/openz/lofdg/buildr_fdg/src/main/resources/com/company/scores.txt /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources/com/company/scores.txt
mkdir -p /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources/com/company
cp /Users/cerhov/projects/openz/lofdg/buildr_fdg/src/main/resources/com/company/behavior.txt /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources/com/company/behavior.txt
mkdir -p /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources/com/company
cp /Users/cerhov/projects/openz/lofdg/buildr_fdg/src/main/resources/com/company/schoolDates.txt /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources/com/company/schoolDates.txt
mkdir -p /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources/com/company
cp /Users/cerhov/projects/openz/lofdg/buildr_fdg/src/main/resources/com/company/assignments.txt /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources/com/company/assignments.txt
touch /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources
mkdir -p /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/classes
Compiling buildr_fdg into /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/classes
Note: /Users/cerhov/projects/openz/lofdg/buildr_fdg/src/main/java/com/company/Main.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
touch /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/classes
Completed in 0.926s
(in /Users/cerhov/projects/openz/lofdg/buildr_fdg, development)
Building buildr_fdg
Packaging buildr_fdg
Packaging buildr_fdg-1.0.0.jar
rm /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/buildr_fdg-1.0.0.jar
mkdir -p /Users/cerhov/projects/openz/lofdg/buildr_fdg/target
Running integration tests...
Completed in 0.212s
这给了我“.class”文件。现在我想把它打包成一个罐子,所以我:

cerhov : 15:26:04 : ~/projects/openz/lofdg/buildr_fdg $ buildr --verbose package
这给了我:

(in /Users/cerhov/projects/openz/lofdg/buildr_fdg, development)
Compiling buildr_fdg
mkdir -p /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources
mkdir -p /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources/com/company
cp /Users/cerhov/projects/openz/lofdg/buildr_fdg/src/main/resources/com/company/students.txt /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources/com/company/students.txt
mkdir -p /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources/com/company
mkdir -p /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources/com
mkdir -p /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources/com/company
cp /Users/cerhov/projects/openz/lofdg/buildr_fdg/src/main/resources/com/company/scores.txt /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources/com/company/scores.txt
mkdir -p /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources/com/company
cp /Users/cerhov/projects/openz/lofdg/buildr_fdg/src/main/resources/com/company/behavior.txt /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources/com/company/behavior.txt
mkdir -p /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources/com/company
cp /Users/cerhov/projects/openz/lofdg/buildr_fdg/src/main/resources/com/company/schoolDates.txt /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources/com/company/schoolDates.txt
mkdir -p /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources/com/company
cp /Users/cerhov/projects/openz/lofdg/buildr_fdg/src/main/resources/com/company/assignments.txt /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources/com/company/assignments.txt
touch /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/resources
mkdir -p /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/classes
Compiling buildr_fdg into /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/classes
Note: /Users/cerhov/projects/openz/lofdg/buildr_fdg/src/main/java/com/company/Main.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
touch /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/classes
Completed in 0.926s
(in /Users/cerhov/projects/openz/lofdg/buildr_fdg, development)
Building buildr_fdg
Packaging buildr_fdg
Packaging buildr_fdg-1.0.0.jar
rm /Users/cerhov/projects/openz/lofdg/buildr_fdg/target/buildr_fdg-1.0.0.jar
mkdir -p /Users/cerhov/projects/openz/lofdg/buildr_fdg/target
Running integration tests...
Completed in 0.212s
然后我会这样做:

cerhov : 15:26:56 : ~/projects/openz/lofdg/buildr_fdg $ ls target/
我看到已经创建了一个新的Jar文件:

buildr_fdg-1.0.0.jar    classes         resources
因此,我:

java -jar target/buildr_fdg-1.0.0.jar 
但我得到:

Error: An unexpected error occurred while trying to open file target/buildr_fdg-1.0.0.jar
我想获得更多信息,所以我将整个main()函数包装在一个大的try/catch语句中:

public static void main(String[] args) {
try {
    // all my real code goes here, but I have deleted it for clarity
} catch (Exception e) {
    e.printStackTrace();
}
}
然后我重新编译和打包,但仍然得到相同的错误。我不清楚如何强制应用程序提供更多信息

我想看看我的manifest.txt是否进入了我的jar,所以我将jar复制到另一个文件夹中,并将其光盘刻录到该文件夹中,然后:

 jar xf buildr_fdg-1.0.0.jar     
然后这个:

cat META-INF/MANIFEST.MF 
给我看:

Created-By: Buildr
: 
Manifest-Version: 1.0
Main-Class: com/company/Main
看起来不错。也许我可以添加一个类路径,尽管Buildr似乎已经找到了所有的文件

如何强制应用程序向我提供有关问题的更多信息

更新:

我尝试将此行添加到清单:

Class-Path: /Users/cerhov/projects/launchopen/lofdg/buildr_fdg/src/main/java/com/company
然后我重新编译和打包。但这是:

java -cp buildr_fdg-1.0.0.jar com.company.Main
给我:

Error: Could not find or load main class com.company.Main
所以我尝试了各种变化:

/Users/cerhov/projects/launchopen/lofdg/buildr_fdg/src/main/java/com/

/Users/cerhov/projects/launchopen/lofdg/buildr_fdg/src/main/java/

/Users/cerhov/projects/launchopen/lofdg/buildr_fdg/src/main/

/Users/cerhov/projects/launchopen/lofdg/buildr_fdg/src/

/Users/cerhov/projects/launchopen/lofdg/buildr_fdg/
这些都不管用。我应该将类路径指向源目录还是目标目录


为什么Buildr不能为我管理这个?它确实找到了所有的文件,并将它们打包到jar中,因此它知道所有的东西都在哪里

我重新创建了这个问题,并能够通过手动删除清单文件中显示的冒号(:)来纠正它。不知道buildr为什么把它放在那里。这描述了一种可能覆盖buildr中清单文件的方法:我的声誉太低,无法发布评论,因此很遗憾,我只能将其作为答案发布。希望这能有所帮助。

清单文件似乎有几个问题。一个是上面kharyam提到的一个错误的“:”,另一个是主类属性的格式不正确。它应该看起来像类名(即“Main class:com.company.Main”)。如果您可以发布构建文件中定义包的部分,我们可能会进一步提供帮助。

Main.java文件中是否有包语句?如果运行
java-cp buildr\u fdg-1.0.0.jar com.company.Main会发生什么情况。这句话:“java-cp buildr_fdg-1.0.0.jar com.company.Main”告诉我:错误:无法在jar文件中找到或加载主要类com.company.Mainis
com/company/Main
?如果我“jar xf buildr_fdg-1.0.0.jar”并查看提取的内容,那么就有一个“com”文件夹,里面有一个“company”文件夹,里面有一个“company”文件夹“Main.class”。删除冒号并手动构建jar,确实让我克服了一系列问题(将我带到其他问题上)。