尽管在lib目录中添加了AWS依赖项,但Jar文件引发异常

时间:2019-07-18 15:34:13

标签: java amazon-web-services maven

我正在开发一个POC,该POC使用Java连接到AWS S3。我在我的POM中添加了aws-java-sdk作为maven依赖项。当我在Eclipse中运行主类时,此代码可以正常工作。但是,当我使用Maven构建jar并运行jar文件时,由于它没有AWS文件,因此出现以下错误。 生成的jar的大小仅为4KB。因此,它不包括依赖项。在这种情况下,我知道我需要通过包含所有必需的库来提取jar或在POM中使用Maven程序集插件并使用Maven进行构建。使用这种方式生成的jar的大小为120MB。

但是,我需要编写AWS逻辑的实际模块没有主类。该jar运行在Linux服务器上,它还具有其他依赖关系,这些依赖关系已添加到服务器上的lib文件夹中。它从该文件夹中选择所有其他依赖项。但是它找不到我已添加到lib文件夹中的AWS依赖项。有什么方法可以使用AWS逻辑/依赖关系而不必打包我的模块以包含所有庞大的依赖关系。我希望它使用lib文件夹中的AWS依赖关系,就像它使用其他依赖关系一样: lib文件夹中的ojdbc。

        BasicAWSCredentials awsCreds = new BasicAWSCredentials("access", "secret");
        AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(awsCreds)).withRegion(Regions.US_WEST_2).build();

        S3Object object = s3Client.getObject(new GetObjectRequest(bucketName, key));
        InputStream objectData = object.getObjectContent();
        fullObject = s3Client.getObject(new GetObjectRequest(bucketName, key));

摆脱异常

    Error: A JNI error has occurred, please check your installation and try again
    Exception in thread "main" java.lang.NoClassDefFoundError: com/amazonaws/auth/AWSCredentials
            at java.lang.Class.getDeclaredMethods0(Native Method)
            at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
            at java.lang.Class.privateGetMethodRecursive(Unknown Source)
            at java.lang.Class.getMethod0(Unknown Source)
            at java.lang.Class.getMethod(Unknown Source)
            at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
            at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
    Caused by: java.lang.ClassNotFoundException: com.amazonaws.auth.AWSCredentials
            at java.net.URLClassLoader.findClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            ... 7 more

0 个答案:

没有答案