有谁知道答案?根据http://java.sun.com/javase/technologies/core/basic/intl/faq.jsp,它是4.0的5.它是否在6升级?参考链接也将非常受欢迎.
如何判断java类是否已编译为在java 6 vm上使用?
有一个简单的方法吗?
当我使用wsgen或apt在JDK 7中使用命令生成Web服务工件时.
wsgen -s src -cp CLASS_PATH -d OUTPUT_DIRECTORY com.sun.WebServiceSEI
Run Code Online (Sandbox Code Playgroud)
显示以下警告消息
自JDK 7以来,com.sun.mirror包中包含的apt工具及其关联的API已被弃用,并计划在下一个主要JDK版本中删除.使用javac工具中提供的选项以及包javax.annotation.processing和javax.lang.model中包含的API来处理注释.
如何在不使用wsgen或apt删除此警告的情况下生成Web服务工件?
对于在Windows 7上从Java 6迁移到Java 7运行时的迁移项目,我们希望得到以下情况:
我们发现许多使用该路径来实现这种情况的解决方案,但我们正在寻找一种保持默认路径的方法(使用C:\ Windows\System中的java.exe).不幸的是,将注册表项\ HKLM\SOFTWARE\Wow6432\JavaSoft\Java Runtime Environment\CurrentVersion更改为1.6不起作用.
有没有人有这样的设置经验?
编辑: 我有很多问题为什么我们想要这个.我可以讨论所有的细节,但请从我这里了解我们讨论了所有可能的情况,这是影响我们业务的最少的情况.涉及超过10K系统(笔记本电脑+台式机)以及许多不同的Applet,webstart应用程序和独立客户端应用程序.
我面临着以下列格式匹配输入的挑战:
正则表达式应该与序列的给定key = value部分匹配,并且不应该为长输入中断(例如,值为10000个字符).
首先我来到这个解决方案:
/(\w+)=(\d+|"(?:""|[^"])+"(?!"))
Run Code Online (Sandbox Code Playgroud)
并且它执行得不错,但是在Java6中,对于长输入(例如,cashes regexplanet),StackOverflowError失败了.我尝试改进它以便更快地运行:
/(\w+)=(\d+|"(?:""|[^"]+)+"(?!"))
Run Code Online (Sandbox Code Playgroud)
但是如果输入不匹配,它会在回溯中进入无限循环,试图匹配它.
然后我来到这个正则表达式:
/(\w+)=(\d+|".+?(?<!")(?:"")*"(?!"))
Run Code Online (Sandbox Code Playgroud)
表现较慢,但它似乎解决了这个任务.
任何人都可以建议更好/更快的正则表达式?
样本输入:
/mol_type="protein" /transl_table=11 /note="[CDS] (""multi
line)" nn /organism="""Some"" Sequence" nn /organism="Some ""Sequence"""
/translation="MHPSSSRIPHIAVVGVSAIFPGSLDAHGFWRDILSGTDLITDVPSTHWLVE
DYYDPDPSAPDKTYAKRGAFLKDVPFDPLEWGVPPSIVPATDTTQLLALIVAKRVLEDAAQGQFE
SMSRERMSVILGVTSAQELLASMVSRIQRPVWAKALRDLGYPEDEVKRACDKIAGNYVPWQESSF
PGLLGNVVAGRIANRLDLGGTNCVTDAACASSLSAMSMAINELALGQSDLVIAGGCDTMNDAFMY
MCFSKTPALSKSGDCRPFSDKADGTLLGEGIAMVALKRLDDAERDGDRVYAVIRGIGSSSDGRSK
SVYAPVPEGQAKALRRTYAAAGYGPETVELMEAHGTGTKAGDAAEFEGLRAMFDESGREDRQWCA
LGSVKSQIGHTKAAAGAAGLFKAIMALHHKVLPPTIKVDKPNPKLDIEKTAFYLNTQARPWIRPG
DHPRRASVSSFGFGGSNFHVALEEYTGPAPKAWRVRALPAELFLLSADTPAALADRARALAKEAE
VPEILRFLARESVLSFDASRPARLGLCATDEADLRKKLEQVAAHLEARPEQALSAPLVHCASGEA
PGRVAFLFPGQGSQYVGMGADALMTFDPARAAWDAAAGVAIADAPLHEVVFPRPVFSDEDRAAQE
ARLRETRWAQPAIGATSLAHLALLAALGVRAEAFAGHSFGEITALHAAGALSAADLLRVARRRGE
LRTLGQVVDHLRASLPAAGPAASASPAAAASVPKASTAAVPAVASVAAPGAAEVERVVMAVVAET
TGYPAEMLGLQMELESDLGIDSIKRVEILSAVRDRTPGLSEVDASALAQLRTLGQVVDHLRASLP
AASAGPAVAAPAAKAPAVAAPTGVSGATPGAAEVERVVMAVVAETTGYPAEMLGLQMELESDLGI
DSIKRVEILSAVRDRTPGLAEVDASALAQLRTLGQVVDHLRASLGPAAVTAGAAPAEPAEEPAST
PLGRWTLVEEPAPAAGLAMPGLFDAGTLVITGHDAIGPALVAALAARGIAAEYAPAVPRGARGAV
FLGGLRELATADAALAVHREAFLAAQAIAAKPALFVTVQDTGGDFGLAGSDRAWVGGLPGLVKTA
ALEWPEASCRAIDLERAGRSDGELAEAIASELLSGGVELEIGLRADGRRTTPRSVRQDAQPGPLP
LGPSDVVVASGGARGVTAATLIALARASHARFALLGRTALEDEPAACRGADGEAALKAALVKAAT
SAGQRVTPAEIGRSVAKILANREVRATLDAIRAAGGEALYVPVDVNDARAVAAALDGVRGALGPV
TAIVHGAGVLADKLVAEKTVEQFERVFSTKVDGLRALLGATAGDPLKAIVLFSSIAARGGNKGQC
DYAMANEVLNKVAAAEAARRPGCRVKSLGWGPWQGGMVNAALEAHFAQLGVPLIPLAAGAKMLLD
ELCDASGDRGARGQGGAPPGAVELVLGAEPKALAAQGHGGRVALAVRADRATHPYLGDHAINGVP
VVPVVIALEWFARAARACRPDLVVTELRDVRVLRGIKLAAYESGGEVFRVDCREVSNGHGAVLAA
ELRGPQGALHYAATIQMQQPEGRVAPKGPAAPELGPWPAGGELYDGRTLFHGRDFQVIRRLDGVS
RDGIAGTVVGLREAGWVAQPWKTDPAALDGGLQLATLWTQHVLGGAALPMSVGALHTFAEGPSDG
PLRAVVRGQIVARDRTKADIAFVDDRGSLVAELRDVQYVLRPDTARGQA"
/note="primer of Streptococcus pneumoniae
Run Code Online (Sandbox Code Playgroud)
预期输出(来自regexhero.net):

我想在weblogic 10.3服务器中在运行时编译和加载新类.类加载似乎有点简单:
class ClassFileManager
extends ForwardingJavaFileManager<StandardJavaFileManager> {
Map<String, JavaClassObject> classes = new HashMap<String, JavaClassObject>();
public ClassFileManager(StandardJavaFileManager standardManager) {
super(standardManager);
}
@Override
public ClassLoader getClassLoader(Location location) {
return new SecureClassLoader(currentThread().getContextClassLoader()) {
@Override
protected Class<?> findClass(String name) throws ClassNotFoundException {
byte[] b = classes.get(name).getBytes();
return super.defineClass(name, b, 0, b.length);
}
};
}
@Override
public JavaFileObject getJavaFileForOutput(
Location location, String className, Kind kind, FileObject sibling)
throws IOException {
JavaClassObject result = new JavaClassObject(className, kind);
classes.put(className, result);
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
执行类加载的最简单方法似乎是初始化a SecureClassLoader并让它使用它 …
我有一个用旧版java编写的遗留代码.我正在尝试编译代码并使用ant生成.ear文件.我正在使用的java版本是jdk7/jdk6作为java home.在执行ant脚本时,我收到以下错误
Compiling 20 source files to C:\views\kroger\kroger\of_platform\build\oneforce\classes\ra
warning: [options] bootstrap class path not set in conjunction with -source 1.4
C:\views\kroger\kroger\of_platform\sdk\src\java\ra\com\workscape\connector\wedb\
JdbcConnectionImpl.java:81: error: JdbcConnectionImpl is not abstract and does not override abstract method getNetworkTimeout() in Connection
public class JdbcConnectionImpl implements JdbcConnection {
C:\views\kroger\kroger\of_platform\sdk\src\java\ra\com\workscape\connector\wedb\
JdbcDataSource.java:78: error: JdbcDataSource is not abstract and does not override abstract method getParentLogger() in CommonDataSource
public class JdbcDataSource
Run Code Online (Sandbox Code Playgroud)
我假设这个错误是因为某些jar不兼容较新的jdk版本.当我使用jdk1.4/1.5时,这很好用.请让我知道,如果我需要采取任何最新版本的jar ..使用的数据库是oracle,我使用ojdbc14编译数据库java代码.
它很重要,因为我们必须决定我们需要使用哪个版本的java.
谢谢
我正在尝试从Wallet.java生成CAP文件和导出文件,该文件是samples目录下的Java Card SDK中的标准.我编译类,使用转换器并遇到以下问题:
$ javac -g -d classes/ src/com/sun/javacard/samples/wallet/Wallet.java
$ converter -debug -verbose -classdir "$JC_HOME/samples/src" com.sun.javacard.samples.wallet 0xa0:0x0:0x0:0x0:0x62:0x3:0x1:0xc:0x6:0x1 1.0
Java Card 2.2.2 Class File Converter, Version 1.3
Copyright 2005 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.
parsing /home/user/javacard/java_card_kit-2_2_2/samples/src/com/sun/javacard/samples/wallet/Wallet.class
error: com.sun.javacard.samples.wallet.Wallet: unsupported class file format of version 50.0.
conversion completed with 1 errors and 0 warnings.
Run Code Online (Sandbox Code Playgroud)
我的Java版本和javac版本是相同的,Java 1.6:
$ java -version
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, …Run Code Online (Sandbox Code Playgroud) 所以我对Java 8的变化感到有点困惑 - List.sort - 请跟我一起,因为混乱会变得明显.
我安装了Java 8 JDK并运行Eclipse,并将问题项设置为在1.6(Windows环境)中编译.
在我的代码中,我一直在做(示例扩展BaseExample):
public static final Comparator<BaseExample> sortByLevel_DESC = new Comparator<NavItemBase>() {...};
List<Example> examples = new ArrayList<Example>();
examples.sort(sortByLevel_DESC);
Run Code Online (Sandbox Code Playgroud)
尽管编译为1.6,但这仍然有效,并且一直对我有用(记得我安装了Java 8).
然而...
由于将此代码应用于客户端计算机 - 安装了Java 7(JRE而非JDK)(Linux环境),因此抛出异常"java.util.List.sort()NoSuchMethodException".
将代码从:更改examples.sort(sortByLevel_DESC);为:Collections.sort(examples, sortByLevel_DESC);解决了问题.
这使我得出了一个明显的结论,即由于Java 8特定的代码,并且由于Java 8没有安装,它会失败.
但我想知道......
为什么eclipse不会在没有编译到Java 8时抱怨Java 8代码,就像你在没有编译到Java 8时尝试使用Lambda表达式一样抱怨它:
examples.stream().filter(e -> e.active()).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
(e - > e.active())成为问题:
我想如果方法只是java 8,并且我被编译为6,那么只能执行java 6代码 - 我实际上依赖于这个"项目特定设置"来确保我不写任何代码与客户端通常拥有的较低版本不兼容,例如我尝试使用lambda表达式时.
也许这实际上是Eclipse而不是Java的问题?或者这可能与lambda表达式完全不同(它应该显示错误的方式)?
需要你的java问题的建议.
目前,我们在使用Java代码访问Web服务时遇到问题.我们的供应商使用SSL - RSA 2048位(SHA256withRSA),DH(Diffie-Hellman算法)素数值大于1024的SSL.我们在生产中有java版本1.6.0.10.
当我们执行代码时,我们收到错误 -
Caused by: java.lang.RuntimeException: Could not generate DH keypair at com.sun.net.ssl.internal.ssl.DHCrypt.<init>(DHCrypt.java:106)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverKeyExchange(ClientHandshaker.java:556)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:183)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:593)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:529)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:893)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1138)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1165)
... 6 more
Caused by: java.security.InvalidAlgorithmParameterException: Prime size must be multiple of 64, and can only range from 512 to 1024 (inclusive) at com.sun.crypto.provider.DHKeyPairGenerator.initialize(DashoA13*..)
at java.security.KeyPairGenerator$Delegate.initialize(KeyPairGenerator.java:627)
at com.sun.net.ssl.internal.ssl.DHCrypt.<init>(DHCrypt.java:100) ... 13 more
Run Code Online (Sandbox Code Playgroud)
这是已知的java的bug /限制,它已在v7及之后修复,但它仍然存在于'1.6.0.10'中
https://bugs.java.com/bugdatabase/view_bug.do?bug_id=7044060 https://bugs.java.com/bugdatabase/view_bug.do?bug_id=6521495
在上面的链接中,我发现以下声明 -
CUSTOMER提交的变通方法:使用BouncyCastle的JCE实现,它不会强制实施此限制,也不会直接使用BigNumber API.
我们无法升级到最新的java版本.我们可以实施任何解决此SSL握手问题的方法吗?我们是否需要对bouncycastle实施进行服务器端更改?或者我们只能在客户端使用?任何有关解决此问题的建议都受到高度赞赏.