相关疑难解决方法(0)

如何在Java中获取调用者类

我想得到方法的调用者类,即

class foo{

  bar();

}
Run Code Online (Sandbox Code Playgroud)

在方法栏中,我需要获取类名foo,我找到了这个方法:

Class clazz = sun.reflect.Reflection.getCallerClass(1);
Run Code Online (Sandbox Code Playgroud)

但是,即使getCallerClasspublic,当我试着调用它时,Eclipse说:

访问限制:由于对所需库C:\ Program Files\Java\jre7\lib\rt.jar的限制,无法访问Reflection类型的方法getCallerClass()

还有其他选择吗?

java

57
推荐指数
5
解决办法
9万
查看次数

抑制javac警告"......是内部专有API,可能会在将来的版本中删除"

当我使用JDK 1.7.0在OS X上编译Spring JDBC源代码时,我收到此警告:

warning: CachedRowSetImpl is internal proprietary API and may be removed in a future release
Run Code Online (Sandbox Code Playgroud)

如何在编译期间禁止显示警告消息?

我已经知道并使用Java的@SuppressWarning注释.我正在寻找具体用法来抑制我所描述的警告.

我的问题具体是,在这行代码中:

@SuppressWarnings("valuegoeshere")
Run Code Online (Sandbox Code Playgroud)

应该用"valuegoeshere"替换什么?

编辑:人们,我知道最好避免导致警告的代码.通常这将是我的方法.但是我在这里编译第三方代码,我不想重写.我只想添加正确的注释来抑制警告,以便我可以实际做些什么的警告不会被埋没.

java javac

45
推荐指数
4
解决办法
4万
查看次数

import com.sun.image.codec.jpeg.*

我编译它时有一个Java程序我得到以下错误

[javac] ...\MyClass.java:33: package com.sun.image.codec.jpeg does not exist
[javac] import com.sun.image.codec.jpeg.*;
[javac] ^
Run Code Online (Sandbox Code Playgroud)

我能做什么 ?

现在不推荐使用com.sun软件包,编写映像文件的正确方法是什么.

java image-processing

34
推荐指数
2
解决办法
8万
查看次数

使用Sun专有的Java类是不好的做法?

如果使用Sun的专有Java类,编译器将显示警告.我认为使用这些类通常是一个坏主意.我在某处读到了这个.但是,除了警告之外,还有任何根本原因,你不应该使用它们吗?

java sun

26
推荐指数
4
解决办法
1万
查看次数

在JDK6u18中JAXB的NamespacePrefixMapper发生了什么

我一直com.sun.xml.bind.marshaller.NamespacePrefixMapper在我的项目中使用,我在JDK 6u17中没有遇到任何问题.现在我刚刚更新到6u18,我看到它已被替换为com.sun.xml.internal.bind.marshaller.NamespacePrefixMapper.但是,如果我导入此类并尝试编译我的类,我会收到错误:

package com.sun.xml.internal.bind.marshaller does not exist
import com.sun.xml.internal.bind.marshaller.NamespacePrefixMapper;

我可以通过NetBeans代码完成功能访问此包,NetBeans不会突出显示错误代码.

任何帮助,将不胜感激!

java jaxb

25
推荐指数
3
解决办法
5万
查看次数

使用Gradle编译时如何克服"package com.sun.xml.internal.xxx不存在"?

我想编译使用一些Java不推荐的"sun"包的Java代码,Gradle编译任务因此错误而失败

error: package com.sun.xml.internal.ws.developer does not exist
Run Code Online (Sandbox Code Playgroud)

我正在使用Hotspot JDK,我可以在那里看到这个包(所以它实际存在 - 在rt.jar文件中)我也尝试将rt.jar本身添加到Gradle依赖项中:

compile files( 'C:/Program Files/Java/jdk1.7.0_05/jre/lib/rt.jar')
Run Code Online (Sandbox Code Playgroud)

但没有效果

这是我的gradle -v输出:

------------------------------------------------------------
Gradle 1.2
------------------------------------------------------------

Gradle build time: Streda, 2012, september 12 10:46:02 UTC
Groovy: 1.8.6
Ant: Apache Ant(TM) version 1.8.4 compiled on May 22 2012
Ivy: 2.2.0
JVM: 1.7.0_05 (Oracle Corporation 23.1-b03)
OS: Windows 7 6.1 amd64
Run Code Online (Sandbox Code Playgroud)

我还尝试将jaxws-rt.jar添加到classpath中 - 两者都没有效果

我真的很感激任何帮助

谢谢

gradle

21
推荐指数
1
解决办法
3万
查看次数

如何从Java生成,签名和导入SSL证书

可能重复:
使用Java生成证书,公钥和私钥

我需要在运行时生成自签名证书,签名并导入Java密钥库.我可以通过命令行中的"keytool"和"openssl"以下列方式执行此操作:

keytool -import -alias root -keystore keystore.txt -file cacert.pem
keytool -genkey -keyalg RSA -keysize 1024 -alias www.cia.gov -keystore keystore.txt
keytool -keystore keystore.txt -certreq -alias www.cia.gov -file req.pem
openssl x509 -req -days 3650 -in req.pem -CA cacert.pem -CAkey cakey.pem -CAcreateserial -out reqsigned.pem 
keytool -import -alias www.cia.gov -keystore keystore.txt -trustcacerts  -file reqsigned.pem
Run Code Online (Sandbox Code Playgroud)

当然,我可以使用keytool和openssl二进制文件发送我的应用程序并从Java执行上述命令,但我正在寻找一种更清晰的方法,这将允许我使用纯Java完成上述所有操作.

我可以使用的任何库?

java ssl certificate self-signed keytool

12
推荐指数
2
解决办法
2万
查看次数

如何正确捕获ClientTransportException

我有一个用 JAX-WS 编写的 SOAP 客户端。我的代码是这样的:

UpdateSub port = service.getUpdateSub();
port.soapMethod(parameter);
Run Code Online (Sandbox Code Playgroud)

我想要针对与 SOAP 服务器的连接被拒绝或超时的情况提供特定的代码。我测试了这些情况,发现soapMethod 抛出ClientTransportException。ClientTransportException 来自 sun 包,因此如果我导入它以捕获它,编译器会抛出此错误:

包 com.sun.xml.internal.ws.client 不存在

我按照Karmakaze 建议的方式解决了这个问题

据我了解,这只是一种解决方法,Oracle 不建议这样做。那么,在没有编译器参数的情况下捕获此类异常的正确方法是什么?

java soap web-services

5
推荐指数
1
解决办法
3326
查看次数

如何从OSGI包中访问内部sun.security类?

我需要将哪些选项添加到maven构建或java运行时才能访问内部sun.security类?来自Akamai的Java代码在OSGI包中需要访问内部sun.security类.Apache Felix控制台为OSGI包提供错误:

sun.awt.image.codec -- Cannot be resolved
sun.io -- Cannot be resolved
sun.misc -- Cannot be resolved
sun.rmi.rmic -- Cannot be resolved
sun.security.action -- Cannot be resolved
sun.security.ec -- Cannot be resolved
sun.security.internal.interfaces -- Cannot be resolved
...
Run Code Online (Sandbox Code Playgroud)

我看了这篇关于使用内部sun类的文章,但它只引用了javac.我的maven构建开始如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd ">
  <modelVersion>4.0.0</modelVersion>
  <artifactId>cdncache</artifactId>
  <packaging>bundle</packaging>
  <name>NCDN Cache</name>
  <description>Classes and interfaces to expire resource from the Akamai CDN cache [build:${build.number}]\
</description>
  <version>1.0-${build.number}</version>
  <properties>
    <!-- Skip tests, so maven execution is faster. -->
    <maven.test.skip>true</maven.test.skip>
    <file.encoding>utf-8</file.encoding>
  </properties>
  <build> …
Run Code Online (Sandbox Code Playgroud)

java osgi maven apache-felix

2
推荐指数
1
解决办法
6302
查看次数

无法解析jdk.internal包

NetBeans似乎无法解析jdk.internal.*类,但其他内部API(即com.sun.*)没有解决问题.

编译错误:"jdk.internal.org.objectweb.asm.ClassReader不存在"
(此包存在于rt.jar中)

这是NetBeans的错误吗?

NetBeans:8.0(Build 201403101706)
Java:1.8.0_20-ea; Java HotSpot(TM)64位服务器VM 25.20-b20
系统:在amd64上运行的Windows 7版本6.1

java netbeans

2
推荐指数
1
解决办法
8599
查看次数