Java jar读取的文件的位置';jsp调用的方法

Java jar读取的文件的位置';jsp调用的方法,java,jsp,jakarta-ee,oauth-2.0,google-oauth,Java,Jsp,Jakarta Ee,Oauth 2.0,Google Oauth,我在jsp页面中遇到了各种各样的问题,因为我试图读取一个.p12文件(google服务帐户密钥文件),而jar文件中的方法找不到它。我会尽量描述这个问题(作为我在这里的第一个问题,我宁愿放太多的信息,而不是太少) jsp文件名为modDrive.jsp,它位于Dinamic Web项目的WebContent文件夹中。 我已经将miGoogle-drive.jar添加到lib文件夹(将源文件添加到WEB-INF/classes/miGoogle文件夹) modDrive.jsp对jar文件中的Dr

我在jsp页面中遇到了各种各样的问题,因为我试图读取一个.p12文件(google服务帐户密钥文件),而jar文件中的方法找不到它。我会尽量描述这个问题(作为我在这里的第一个问题,我宁愿放太多的信息,而不是太少)

jsp文件名为modDrive.jsp,它位于Dinamic Web项目的WebContent文件夹中。 我已经将miGoogle-drive.jar添加到lib文件夹(将源文件添加到WEB-INF/classes/miGoogle文件夹)

modDrive.jsp对jar文件中的DriveConnect静态类进行以下两个调用:

DriveConnect.setKEY_PATH("privatekey.p12");
DriveConnect.entrada("email@domain.net");
问题在于entrada方法:

public static void entrada(String serviceAccountUser) {
        try {
          try {
            HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
            GoogleCredential googleCredential = null;

                googleCredential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT)
                        .setJsonFactory(JSON_FACTORY)
                        .setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
                        .setServiceAccountScopes(Collections.singleton(DriveScopes.DRIVE))
                        .setServiceAccountPrivateKeyFromP12File(KEY_FILE)
                        .setServiceAccountUser(serviceAccountUser)
                        .build();
具体的问题是找不到KEY_文件(源自之前设置的KEY_路径),显然我得到了一个FILE not found错误。。。你可以想象,我试着把.p12文件放在所有文件夹中,什么都没有,我也试着把a/作为KEY_PATH字符串的第一个字符,但是没有办法

任何帮助都将不胜感激。:-)


哦,是的,前面的代码作为cmd项目(没有jar文件)工作得很好,在该项目中,.p12文件位于项目的根文件夹中。

仅传入一个相对文件名可能会导致它在进程的工作目录中查找,该目录可以在不同的运行时环境中更改

如果可以在setServiceAccountPrivateKeyFromP12File()中传递绝对路径名,则可以通过以下方式可靠地获取绝对路径:

new File(MyClass.class.getResource("privatekey.p12").toURI()).getAbsolutePath()

本例中的“privatekey.p12”文件名是相对于MyClass的,您可能需要相应地调整它。

似乎setServiceAccountPrivateKeyFromP12File()不接受字符串,而是文件,所以我这样解决:
KEY\u file=new java.io.file(DriveConnect.class.getResource(KEY\u PATH.toURI())。SetServiceAccountPrivateKeyFromp12文件(KEY_FILE.getAbsoluteFile())现在似乎可以工作了(至少在类文件夹中找到该文件。我理解你所说的,如果我在URL前面加上/folder/subfolder/I,我可以将密钥存储在类的独立文件夹中。谢谢!(抱歉多次编辑!)(第一条评论)很好。但是如果你把文件放在src/main/resource/keys中怎么办?你如何访问/WEB-INF/classes文件夹?