gpt4 book ai didi

java - Java 存储过程中没有 imaps 错误的提供程序

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:45:55 25 4
gpt4 key购买 nike

我正在尝试使用保存在 Oracle 数据库中的 Java 类从我的 gmail 中获取电子邮件。目前我使用 Oracle Database 12.2。

这是我的 Java 源代码:

import java.io.IOException;
import java.sql.SQLException;
import java.util.Properties;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMultipart;


public class GmailInbox {

public static void main(String[] args)
throws SQLException, MessagingException, IOException
{
read();
}

public static String read()
throws SQLException, MessagingException, IOException
{
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore("imaps");
store.connect("smtp.gmail.com", "*********@gmail.com","password");
Folder inbox = store.getFolder("inbox");
inbox.open(Folder.READ_ONLY);

int messageCount = inbox.getMessageCount();
System.out.println("Total Messages:- " + messageCount);

Message[] messages = inbox.getMessages();

System.out.println("------------------------------");

for (int i = messages.length - 1; i >= messages.length-3 ; i--) {
Message message = messages[i];
System.out.println("---------------------------------");
System.out.println("Email Number " + (i + 1));
System.out.println("Subject: " + message.getSubject());
System.out.println("Date: " + message.getReceivedDate());
System.out.println("From: " + InternetAddress.toString(message.getFrom()));
}
inbox.close(true);
store.close();

return("Done");
}

}

它在 Eclipse IDE 中完美运行。

我通过

将此 Java 源代码加载到数据库中
loadjava -user <user>/<password> -verbose -resolve <path_to_java_code>

类和源都是“有效的”

select DBMS_JAVA.LONGNAME(OBJECT_NAME) as object_name,
object_type,
status,
from user_objects
where object_type like 'JAVA%';

之后我创建了一个函数:

create or replace function TestGmail
return varchar2
is language java name
'GmailInbox.read() return String';

最后,当我尝试通过以下代码在 Oracle 中执行此类时:

declare 
output varchar2(50);
begin
output := TestGmail;
dbms_output.put_line(output);
end;

我收到错误:

ORA-29532: Java call terminated by uncaught Java exception: javax.mail.NoSuchProviderException: No provider for imaps

有什么办法可以避免这个错误吗?

最佳答案

使用 loadjava utility在数据库中存储必要的依赖项(似乎是 javax.mail.jar),以便 Oracle 可以在其类路径中找到它们。

例如:

loadjava -user <user>/<password> -resolve javax.mail.jar

关于java - Java 存储过程中没有 imaps 错误的提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53796374/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com