短篇小说: 当我通过Intellij运行我的java应用程序时,它一切正常。
当我通过命令行运行时,我遇到了一些问题。
长篇故事: 首先,我必须说我的项目中有一个'lib'文件夹,里面有我需要的所有Jars,我把它作为一个库添加到项目中。
当我从命令行编译它时,我必须为lib文件夹指定'-cp',否则它不会加载jar。即使它看起来不错,当我运行我的java应用程序时,我收到'Error: Could not find or load main class awsUpdater'
错误
我的命令: 用于编译 -
javac -cp "../../../../lib/*" awsUpdater.java
执行 -
java -cp "../../../../lib/*" awsUpdater
这是我的班级(除了方法)
package AWSUpdater;
import com.amazonaws.AmazonClientException;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.GetObjectRequest;
import com.amazonaws.services.s3.model.PutObjectRequest;
import com.amazonaws.services.s3.model.S3Object;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class awsUpdater {
public static void main(String[] args) throws IOException {
String bucketName = "bucket";
String key = "ket";
//AmazonS3 s3Client = new AmazonS3Client(new ProfileCredentialsProvider());
AmazonS3 s3Client = new AmazonS3Client(DefaultAWSCredentialsProviderChain.getInstance());
System.out.println("Downloading an object");
S3Object s3object = s3Client.getObject(new GetObjectRequest(
bucketName, key));
//Get new version of android
String newAndroidVersion = getNewAndroidVersion();
//Download current versions.json
String currentJson = displayTextInputStream(s3object.getObjectContent());
//Edit versions.json with new android version
String editedJson = editJsonWithCurrentAndroidVersion(currentJson, newAndroidVersion);
//String editedJson = editJsonDummyCheck(currentJson);
//Create new file to upload to S3
createFileWithNewJson(editedJson);
//Upload new file to S3
updateVersion(bucketName, key, "versions.json");
}
非常感谢有关如何通过命令行编译和执行程序的任何帮助。谢谢!
答案 0 :(得分:1)
您需要添加包名称
java -cp "../../../../lib/*" AWSUpdater.awsUpdater
答案 1 :(得分:0)
我注意到课程awsUpdater
位于包AWSUpdater
下,因此您无法直接使用java -cp "../../../../lib/*" awsUpdater
。
例如:
我创建了这样一个项目:
|-test
|-AWSUpdater
|-awsUpdater.java
awsUpdater.java
的详细信息:
public class awsUpdater {
public static void main(String[] args) {
System.out.println("hello");
}
}
然后(现在我在test/AWSUpdater
):
javac awsUpdater.java
java awsUpdater
一切顺利!
如果我将类添加到包中,如下所示:
package AWSUpdater;
public class awsUpdater {
public static void main(String[] args) {
System.out.println("hello");
}
}
然后(现在我在test/AWSUpdater
):
javac awsUpdater.java
java awsUpdater
在这里,它会得到与你的错误相同的错误。
现在,您可以转到包的根目录。 (这里是test
),然后是:
javac AWSUpdater/awsUpdater.java
java AWSUpdater/awsUpdater
现在,您将获得正确的结果。