日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Java常見問題

本文介紹使用OSS Java SDK的常見問題及解決方法。

包沖突

  • 錯誤原因

    使用OSS Java SDK時,報類似如下錯誤,說明工程中可能有包沖突。

    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/ssl/TrustStrategy
        at com.aliyun.oss.OSSClient.<init>(OSSClient.java:268)
        at com.aliyun.oss.OSSClient.<init>(OSSClient.java:193)
        at com.aliyun.oss.demo.HelloOSS.main(HelloOSS.java:77)
    Caused by: java.lang.ClassNotFoundException: org.apache.http.ssl.TrustStrategy
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
        ... 3 more
                        

    Exception in thread "main" java.lang.NoSuchFieldError: INSTANCE
     at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:52)
     at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:56)
     at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<clinit>(DefaultHttpRequestWriterFactory.java:46)
     at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<init>(ManagedHttpClientConnectionFactory.java:82)
     at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<init>(ManagedHttpClientConnectionFactory.java:95)
     at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<init>(ManagedHttpClientConnectionFactory.java:104)
     at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<clinit>(ManagedHttpClientConnectionFactory.java:62)
     at org.apache.http.impl.conn.PoolingHttpClientConnectionManager$InternalConnectionFactory.<init>(PoolingHttpClientConnectionManager.java:572)
     at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:174)
     at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:158)
     at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:149)
     at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:125)
     at com.aliyun.oss.common.comm.DefaultServiceClient.createHttpClientConnectionManager(DefaultServiceClient.java:237)
     at com.aliyun.oss.common.comm.DefaultServiceClient.<init>(DefaultServiceClient.java:78)
     at com.aliyun.oss.OSSClient.<init>(OSSClient.java:268)
     at com.aliyun.oss.OSSClient.<init>(OSSClient.java:193)
     at OSSManagerImpl.upload(OSSManagerImpl.java:42)
     at OSSManagerImpl.main(OSSManagerImpl.java:63)
                        

    錯誤原因是OSS Java SDK使用了Apache HttpClient 4.4.1,而您的工程使用了與Apache HttpClient 4.4.1沖突的Apache HttpClientcommons-httpclient jar包。要查看工程使用的jar包及版本,請在您的工程目錄下執行mvn dependency:tree。如下圖所示,您的工程里使用了Apache HttpClient 4.3:

  • 解決方法

    包沖突有以下兩種解決方法:

    • 使用統一版本。如果您的工程使用與Apache HttpClient 4.4.1沖突的版本,請您使用4.4.1版本,并在pom.xml刪除其它版本的Apache HttpClient依賴。如果您的工程使用了commons-httpclient,也可能存在沖突,請刪除commons-httpclient。

    • 解決依賴沖突。如果您的工程依賴多個第三方包,而第三方包又依賴不同版本的Apache HttpClient,您的工程里會有依賴沖突,請使用exclusion解除。更多信息,請參見Maven Guides

    OSS Java SDK依賴以下版本的包,沖突解決辦法與HttpClient類似。

缺少包

  • 錯誤原因

    使用OSS Java SDK時,報類似如下錯誤,說明您的工程中可能缺少編譯或運行OSS Java SDK所必需的包。

    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/auth/Credentials
            at com.aliyun.oss.OSSClient.<init>(OSSClient.java:268)
            at com.aliyun.oss.OSSClient.<init>(OSSClient.java:193)
            at com.aliyun.oss.demo.HelloOSS.main(HelloOSS.java:76)
    Caused by: java.lang.ClassNotFoundException: org.apache.http.auth.Credentials
            at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
            at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
            ... 3 more
                        

    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/http/protocol/HttpContext
            at com.aliyun.oss.OSSClient.<init>(OSSClient.java:268)
            at com.aliyun.oss.OSSClient.<init>(OSSClient.java:193)
            at com.aliyun.oss.demo.HelloOSS.main(HelloOSS.java:76)
    Caused by: java.lang.ClassNotFoundException: org.apache.http.protocol.HttpContext
            at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
            at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
            ... 3 more
                        

    Exception in thread "main" java.lang.NoClassDefFoundError: org/jdom/input/SAXBuilder
            at com.aliyun.oss.internal.ResponseParsers.getXmlRootElement(ResponseParsers.java:645)
            at … … 
            at com.aliyun.oss.OSSClient.doesBucketExist(OSSClient.java:471)
            at com.aliyun.oss.OSSClient.doesBucketExist(OSSClient.java:465)
            at com.aliyun.oss.demo.HelloOSS.main(HelloOSS.java:82)
    Caused by: java.lang.ClassNotFoundException: org.jdom.input.SAXBuilder
            at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
            at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
            at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
            at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
            ... 11 more
                        

    OSS Java SDK依賴下列包:

    • aliyun-sdk-oss-2.2.1.jar

    • hamcrest-core-1.1.jar

    • jdom-1.1.jar

    • commons-codec-1.9.jar

    • httpclient-4.4.1.jar

    • commons-logging-1.2.jar

    • httpcore-4.4.1.jar

    • log4j-1.2.15.jar

    其中log4j-1.2.15.jar是可選的,需要日志功能的時候加入該包,其它包都是必需的。

  • 解決方法

    在您的工程中加入OSS Java SDK依賴的包。加入方法如下:

    • 如果您的工程在Eclipse中,請參見Java SDK使用手冊中的安裝方式二。

    • 如果您的工程在Ant中,請把OSS Java SDK依賴的包放入工程的lib目錄中。

    • 如果您直接使用.javac或.java文件,請使用-classpath-cp命令指定OSS Java SDK依賴的包路徑,或把OSS Java SDK依賴的包放入classpath路徑下。

連接超時

  • 錯誤原因

    運行OSS Java SDK程序時報如下類似錯誤,可能原因是Endpoint錯誤或者網絡不通。

    com.aliyun.oss.ClientException: SocketException
        at com.aliyun.oss.common.utils.ExceptionFactory.createNetworkException(ExceptionFactory.java:71)
        at com.aliyun.oss.common.comm.DefaultServiceClient.sendRequestCore(DefaultServiceClient.java:116)
        at com.aliyun.oss.common.comm.ServiceClient.sendRequestImpl(ServiceClient.java:121)
        at com.aliyun.oss.common.comm.ServiceClient.sendRequest(ServiceClient.java:67)
        at com.aliyun.oss.internal.OSSOperation.send(OSSOperation.java:92)
        at com.aliyun.oss.internal.OSSOperation.doOperation(OSSOperation.java:140)
        at com.aliyun.oss.internal.OSSOperation.doOperation(OSSOperation.java:111)
        at com.aliyun.oss.internal.OSSBucketOperation.getBucketInfo(OSSBucketOperation.java:1152)
        at com.aliyun.oss.OSSClient.getBucketInfo(OSSClient.java:1220)
        at com.aliyun.oss.OSSClient.getBucketInfo(OSSClient.java:1214)
        at com.aliyun.oss.demo.HelloOSS.main(HelloOSS.java:94)
    Caused by: org.apache.http.conn.HttpHostConnectException: Connect to oss-test.oss-cn-hangzhou-internal.aliyuncs.com:80 [oss-test.oss-cn-hangzhou-internal.aliyuncs.com/10.84.135.99] failed: Connection timed out: connect
        at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:151)
        at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)
        at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:380)
        at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
        at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
        at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
        at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
        at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
        at com.aliyun.oss.common.comm.DefaultServiceClient.sendRequestCore(DefaultServiceClient.java:113)
        ... 9 more
                        
  • 解決方法

    您可以使用ossutil工具快速定位錯誤原因并解決問題。

報錯SignatureDoesNotMatch

  • 錯誤原因1

    AccessKey IDAccessKey Secret不一致。

    有關獲取AccessKey IDAccessKey Secret的操作步驟,請參見創建AccessKey。

  • 錯誤原因2

    簽名URL使用不正確。錯誤示例如下:

    GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, object);
    request.setExpiration( new Date(new Date().getTime() + 3600 * 1000));
    request.addUserMetadata("author");
    URL url = ossClient.generatePresignedUrl(request);
    
    Map<String, String> header = new HashMap<String, String>();
    header.put("author");
    ossClient.putObject(url, new ByteArrayInputStream("Hello OSS".getBytes()), -1, header);

    未指定Method參數時,默認使用GET方法。以上為PutObject請求,應指定Method參數并設置為PUT方法。

    通過PutObject發送請求時,請求Header中自定義的元數據必須以x-oss-meta-為前綴。以上示例中自定義元數據應改為x-oss-meta-author。

    解決方法:

    指定Method,并修改Header:

    request.addUserMetadata("author");
    request.setMethod(HttpMethod.PUT);
    URL url = ossClient.generatePresignedUrl(request);
    
    Map<String, String> header = new HashMap<String, String>();
    header.put("x-oss-meta-" + "author");
    ossClient.putObject(url, new ByteArrayInputStream("Hello OSS".getBytes()), -1, header);
  • 錯誤原因3

    • 使用了低于3.7.0版本的OSS SDK,項目中引入了4.5.9及以上版本的HttpClient。

    • 上傳的文件名中包含+字符,而4.5.9版本的HttpClient不會對+進行URLEncode編碼,從而造成客戶端與服務端計算的簽名不一致而報錯。

    1

    解決方法:

    • OSS SDK建議升級為3.11.1及以上版本, 以兼容4.5.9版本的HttpClient。

    • 移除多余的HttpClient依賴。引入OSS SDK時會自動引入HttpClient依賴,如果是第三方庫另外引入了HttpClient,請參見包沖突解決方案。

  • 錯誤原因4

    HttpClient 4.5.10版本不支持Header中包含ISO/9959-1標準以外的字符,但在項目中引入了4.5.10以上的httpclient,并在請求Header中包含了ISO/9959-1標準以外的字符,例如x-oss-meta-開頭的自定義元數據中傳入了中文字符。3

    解決方法:

    • 參見包沖突解決方案,移除沖突的HttpClient版本。

    • 在請求Header中傳入符合ISO/9959-1標準的字符。

報異常“Failed to parse the response result”

FAQ3

  • 錯誤原因

    客戶端某些特殊的軟件攔截了HTTP請求,或者公網路由劫持了HTTP請求。

    Java 11上使用OSS Java SDK,且未在pom.xml文件中添加JAXB相關依賴。

  • 解決方法

    切換為HTTPS請求。

    添加JAXB相關依賴。操作步驟,請參見安裝SDK。

org.apache.http.NoHttpResponseException: The target server failed to respond

  • 錯誤原因

    運行OSS Java SDK程序時,報類似如下錯誤:

    使用過期的連接會導致上述錯誤,該錯誤僅在Java SDK 2.1.2之前的版本出現。

  • 解決方法

    請升級OSS Java SDK2.1.2及以后版本。

JVM中存在大量org.apache.http.impl.conn.PoolingHttpClientConnectionManager實例

  • 錯誤原因

    ossClient沒有關閉導致。

  • 解決方法

    主動關閉已執行完畢的ossClient或使用單例模式。

調用OSS Java SDK不響應

  • 錯誤原因

    調用OSS Java SDK不響應。通過jstack -l pid命令查看堆棧,問題出現在如下的位置:

    "main" prio=6 tid=0x000000000291e000 nid=0xc40 waiting on condition [0x0000000002dae000]
    java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000007d85697f8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
        at org.apache.http.pool.PoolEntryFuture.await(PoolEntryFuture.java:138)
        at org.apache.http.pool.AbstractConnPool.getPoolEntryBlocking(AbstractConnPool.java:306)
        at org.apache.http.pool.AbstractConnPool.access$000(AbstractConnPool.java:64)
        at org.apache.http.pool.AbstractConnPool$2.getPoolEntry(AbstractConnPool.java:192)
        at org.apache.http.pool.AbstractConnPool$2.getPoolEntry(AbstractConnPool.java:185)
        at org.apache.http.pool.PoolEntryFuture.get(PoolEntryFuture.java:107)
        at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.leaseConnection(PoolingHttpClientConnectionManager.java:276)
        at org.apache.http.impl.conn.PoolingHttpClientConnectionManager$1.get(PoolingHttpClientConnectionManager.java:263)
        at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:190)
        at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
        at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
        at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
        at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
        at com.aliyun.oss.common.comm.DefaultServiceClient.sendRequestCore(DefaultServiceClient.java:113)
        at com.aliyun.oss.common.comm.ServiceClient.sendRequestImpl(ServiceClient.java:123)
        at com.aliyun.oss.common.comm.ServiceClient.sendRequest(ServiceClient.java:68)
        at com.aliyun.oss.internal.OSSOperation.send(OSSOperation.java:94)
        at com.aliyun.oss.internal.OSSOperation.doOperation(OSSOperation.java:146)
        at com.aliyun.oss.internal.OSSOperation.doOperation(OSSOperation.java:113)
        at com.aliyun.oss.internal.OSSObjectOperation.getObject(OSSObjectOperation.java:229)
        at com.aliyun.oss.OSSClient.getObject(OSSClient.java:629)
        at com.aliyun.oss.OSSClient.getObject(OSSClient.java:617)
        at samples.HelloOSS.main(HelloOSS.java:49)
                        

    原因是連接池中連接泄漏,可能是使用ossObject后沒有關閉。

  • 解決方法

    請檢查您的程序,確保沒有連接泄漏。關閉方法如下:

    // 讀取文件
    OSSObject ossObject = ossClient.getObject(bucketName, objectName);
    // OSS操作
    // 關閉ossObject
    ossObject.close();
                        

    問題排查的具體步驟,請參見OSS Java SDK不響應問題排查。

連接關閉

  • 錯誤原因

    如果您在使用ossClient.getObject時,報類似如下錯誤:

    Exception in thread "main" org.apache.http.ConnectionClosedException: Premature end of Content-Length delimited message body (expected: 11990526; received: 202880)
        at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:180)
        at org.apache.http.impl.io.ContentLengthInputStream.read(ContentLengthInputStream.java:200)
        at org.apache.http.impl.io.ContentLengthInputStream.close(ContentLengthInputStream.java:103)
        at org.apache.http.impl.execchain.ResponseEntityProxy.streamClosed(ResponseEntityProxy.java:128)
        at org.apache.http.conn.EofSensorInputStream.checkClose(EofSensorInputStream.java:228)
        at org.apache.http.conn.EofSensorInputStream.close(EofSensorInputStream.java:174)
        at java.io.FilterInputStream.close(FilterInputStream.java:181)
        at java.io.FilterInputStream.close(FilterInputStream.java:181)
        at com.aliyun.oss.event.ProgressInputStream.close(ProgressInputStream.java:147)
        at java.io.FilterInputStream.close(FilterInputStream.java:181)
        at samples.HelloOSS.main(HelloOSS.java:39)
                        

    原因是兩次讀取數據間隔時間超過1分鐘。OSS會關閉超過1分鐘沒有發送或接收數據的連接。

  • 解決方法

    如果您每次僅讀取部分數據,且處理數據的時間不固定,建議使用指定范圍讀取,避免數據讀取時連接關閉。當范圍下載完成后,連接將關閉。更多信息,請參見范圍下載。

內存泄露

  • 錯誤原因

    調用OSS Java SDK的程序,運行一段時間(根據業務量,幾小時到幾天不等)后內存泄露。 推薦使用Eclipse Memory Analyzer (MAT)分析內存使用情況。更多信息,請參見使用MAT進行堆轉儲文件分析

    如果分析結果類似下圖所示(PoolingHttpClientConnectionManager96%的內存),原因是程序中可能多次執行new OSSClient,但是沒有調用ossClient.shutdown,造成內存泄漏。

  • 解決方法

    new OSSClient操作完成后,請通過shutdown進行關閉,保證new OSSClientossClient.shutdown成對使用。

調用ossClient.shutdown報異常InterruptedException

  • 錯誤原因

    OSS Java SDK 2.3.0之前的版本在調用ossClient.shutdown時報如下異常:

    java.lang.InterruptedException: sleep interrupted
            at java.lang.Thread.sleep(Native Method)
            at com.aliyun.oss.common.comm.IdleConnectionReaper.run(IdleConnectionReaper:76)
                        

    原因是ossClient后臺線程IdleConnectionReaper會定時關閉閑置連接。IdleConnectionReaperSleep時,調用ossClient.shutdown,就會報上面的異常。

  • 解決方法

    使用如下代碼,忽略該異常:

    try {
        ossClient.shutdown();
    } catch(Exception e) {
    }
                        

請求出現異常“SDK.ServerUnreachable : Speicified endpoint or uri is not valid”

  • 錯誤原因

    • 用戶端并發請求STS過高。

    • 網絡到Server端超時。

    • 所使用的STS SDK以及SDK core不是最新版本。

  • 解決方法

    • 用戶端并發請求STS過高,而用戶端的ECS或者本地PC不足以承載當時的并發,降低OSS并發。

    • 用戶的網絡到Server端有超時現象可以進行抓包驗證。

    • 建議將STS SDKSDK core升級至最新版本。

NoSuchKey

  • 錯誤原因

    源文件不存在。

  • 解決方法

    參見404錯誤。

SocketException

  • 錯誤原因

    可能是socketinit階段就失敗了,導致請求沒有到達OSS。

  • 解決方法

    建議從以下幾個方面進行排查:

    • 出現問題時是否出現網絡抖動。

    • 主機的socket連接數是否占滿。

    • 確認出現問題時連接數是否超過SDK中設置的maxconnection,如果連接數超過maxconnection設置,也會出現socket異常。

    如果以上都沒有問題,建議您部署tcpdump或者Wireshark抓包,問題復現后再分析數據包。

使用OSS PostObjectcallback沒有觸發回調

使用OSS PostObjectcallback沒有觸發回調,但是通過PutObject用同樣的callback觸發了回調。一般情況下,如果JSON格式有誤或者回調失敗,都會返回相應的消息,這里需要分別測試PutPost回調效果:

  • 錯誤原因

    發送請求時callback參數在file下面。

  • 解決方法

    調整callback參數與file的位置。

    此時測試結果顯示業務服務器成功抓取請求。

Connection pool shut down

Caused by: java.lang.IllegalStateException: Connection pool shut down
  at org.apache.http.util.Asserts.check(Asserts.java:34)
  at org.apache.http.pool.AbstractConnPool.lease(AbstractConnPool.java:184)
  at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.requestConnection(PoolingHttpClientConnectionManager.java:251)
  at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:175)
  at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:184)
  at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
  at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:184)
  at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
  at com.aliyun.oss.common.comm.DefaultServiceClient.sendRequestCore(DefaultServiceClient.java:124)
  at com.aliyun.oss.common.comm.ServiceClient.sendRequestImpl(ServiceClient.java:133)
  ... 8 more
  • 錯誤原因

    調用ossClient.shutdown()接口后,還繼續通過ossClient發送請求。

  • 解決方法

    請檢查調用邏輯,確保調用了ossClient.shutdown()接口之后,不再通過ossClient發送請求。

使用Java SDKgeneratePresignedUrl生成的請求報錯Request has expired

  • 錯誤原因

    int類型溢出,導致2038年時間戳問題。

    超出URL設置的過期時間后發起上傳請求。

  • 解決方法

    如果是int類型溢出,建議Java SDK中過期時長不要超過2038年。

    如果因超出URL設置的過期時間后發起上傳請求,建議設置合理的過期時間,確保過期時間大于您發起請求的時間。

報錯Invalid ResponseImplementation of JAXB-API has not been found on module path or classpath

  • 錯誤原因

    使用了Java 9以上的版本,并且沒有添加JAXB依賴。

  • 解決方法

    關于如何添加JAXB依賴的更多信息,請參見安裝SDK。

OSS Java SDK是否多線程安全?

是的,OSS Java SDK多線程安全。

客戶端網絡正常,但是通過HTTP訪問時報錯Connection reset,如何處理?

部分區域的運營商可能會對OSS的域名進行劫持,建議通過Endpoint的方式配置為HTTPS協議。更多信息,請參見配置OSSClient。

Java 17 Cannot invoke "java.lang.reflect.Method.invoke(Object, Object[])" because "com.sun.xml.bind.v2.runtime.reflect.opt.Injector.defineClass" is null

  • 問題原因

    JAXBJava 9中被標記為棄用并在Java 11中被刪除。

  • 解決方法

    添加以下依賴。

        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.messaging.saaj</groupId>
            <artifactId>saaj-impl</artifactId>
            <version>1.5.1</version>
        </dependency>

Java SDK如何配置內部日志打???

Java SDK打印日志采用的是Apache Commons Logging(JCL)日志框架。JCL可以選擇多種日志實現框架(具體參見:JCL-Configuration),比較常見的是JCL over log4j或者JCL over SLF4j兩種,相關實現方式如下:

  • JCL over log4j: 您需要引入log4j的依賴(log4j 2.x有多種實現框架可以選,默認是log4j-api+log4j-core),并按log4j的配置方式進行配置,具體流程參考APACHE LOG4J-API Separation。

  • JCL over slf4j: 您需要引入jcl-over-slf4j 和slf4j的依賴(slf4j也有多種實現框架可選,比如slf4j-api+logback-classic),并按照slf4j的配置方式進行配置,具體流程參考SJF4J-Bridging legacy APIs。

Apache Log4j定義了不同級別的日志,包括OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACEALL。

通過配置log4j的屬性選擇開啟或者關閉SDK日志:

FAQ1

其他錯誤

更多錯誤排查,請參見OSS錯誤響應