在Java 6中,我能够使用:
public static <T, UK extends T, US extends T> T getCountrySpecificComponent(UK uk, US us) {
Country country = CountryContext.getCountry();
if (country == Country.US) {
return us;
} else if (country == Country.UK) {
return uk;
} else {
throw new IllegalStateException("Unhandled country returned: "+country);
}
}
Run Code Online (Sandbox Code Playgroud)
使用这些存储库:
public interface Repository{
List<User> findAll();
}
public interface RepositoryUS extends Repository{}
public interface RepositoryUK extends Repository{}
Run Code Online (Sandbox Code Playgroud)
使用这些时:
RepositoryUK uk = ...
RepositoryUS us = ...
Run Code Online (Sandbox Code Playgroud)
这行在Java6中编译但在Java7中失败(错误找不到符号 - 因为编译器在类Object上查找findAll())
List<User> users = …Run Code Online (Sandbox Code Playgroud) 这是我的模型文档:
@Entity
@Table(name = "documents")
public class Document extends Model {
@Id
public Long id;
@Constraints.Required
@Formats.NonEmpty
@Column(nullable=false)
public String document;
public static Model.Finder<Long,Document> find = new Model.Finder(Long.class, Document.class);
// Will return an absolute URL to this document
public String getUrl() {
return controllers.routes.Documents.display(document.toLowerCase()).absoluteURL(Http.Context.current().request());
}
}
Run Code Online (Sandbox Code Playgroud)
问题是,它在编译时抛出了一个VerifyError异常,并且我发现唯一要避免它的是,对该行进行注释并将其替换为return null; =>不是很有效:/
这是该异常的堆栈跟踪:
Caused by: java.lang.VerifyError: Bad type on operand stack in method models.Document.getUrl()Ljava/lang/String; at offset 13
at java.lang.Class.forName0(Native Method) ~[na:1.7.0_05]
at java.lang.Class.forName(Class.java:264) ~[na:1.7.0_05]
at play.db.ebean.EbeanPlugin.onStart(EbeanPlugin.java:69) ~[play_2.9.1.jar:2.0.2]
Run Code Online (Sandbox Code Playgroud)
这个错误是什么?如何在不丢失getUrl方法的情况下避免它?
谢谢你的帮助!
32位Windows 7上的Java 7 - Java Webstart - 无法加载资源
我无法在32位Windows 7系统上启动任何java webstart应用程序.例如ArgoUML - http://argouml-downloads.tigris.org/jws/argouml-latest-stable.jnlp Java 6的一切正常,但是使用Java 7我遇到了这样的错误:
无法加载资源:java.io.IOException:写入服务器或java.net.SocketException时出错:连接重置
Java version:
Java Web Start 10.7.2.11
Using JRE version 1.7.0_07-b11 Java HotSpot(TM) Client VM
Run Code Online (Sandbox Code Playgroud)
这是跟踪日志:
Log started: pe, 21 syys 2012 21:04:19 +0300
basic: Java part started
basic: jnlpx.jvm: C:\Program Files\Java\jre7\bin\javaw.exe
basic: jnlpx.splashport: 52540
basic: jnlpx.remove: true
basic: jnlpx.heapsize: NULL,512m
network: Loading user-defined proxy configuration ...
network: Done.
network: Browser is ChromeHTML
network: Browser is IE
network: Loading … 我收到以下警告,这似乎是触发后续警告和错误.我一直在谷歌搜索疯狂,但没有找到任何清楚说明我应该做什么来解决这个问题.执行Ant构建时会发生此问题.我正在尝试将项目迁移到Java 7.我已将所有source ='1.6'和target ="1.6"更改为1.7.
我确实找到了这篇相关的文章:转发兼容的Java 6注释处理器和SupportedSourceVersion
它似乎表明我应该自己构建Hibernate注释处理器jar,用1.7编译它.似乎我不应该被要求这样做.有问题的类的最新版本(在hibernate-validator-annotation-processor-5.0.1.Final.jar中)已经用1.6编译.由于所述类中的代码引用SourceVersion.latestSupported(),并且1.6中的代码仅返回RELEASE_6,因此似乎没有通常可用的解决方案.
这是警告:
[javac] warning: Supported source version 'RELEASE_6' from annotation processor 'org.hibernate.validator.ap.ConstraintValidationProcessor' less than -source '1.7'
Run Code Online (Sandbox Code Playgroud)
并且,以下是后续警告/错误.
[javac] warning: No processor claimed any of these annotations: javax.persistence.PersistenceContext,javax.persistence.Column,org.codehaus.jackson.annotate.JsonIgnore,javax.persistence.Id,org.springframework.context.annotation.DependsOn,com.trgr.cobalt.infrastructure.datasource.Bucketed,org.codehaus.jackson.map.annotate.JsonDeserialize,javax.persistence.DiscriminatorColumn,com.trgr.cobalt.dataroom.authorization.secure.Secured,org.hibernate.annotations.GenericGenerator,javax.annotation.Resource,com.trgr.cobalt.infrastructure.spring.domain.DomainField,org.codehaus.jackson.annotate.JsonAutoDetect,javax.persistence.DiscriminatorValue,com.trgr.cobalt.dataroom.datasource.config.core.CoreTransactionMandatory,org.springframework.stereotype.Repository,javax.persistence.GeneratedValue,com.trgr.cobalt.dataroom.datasource.config.core.CoreTransactional,org.hibernate.annotations.Cascade,javax.persistence.Table,javax.persistence.Enumerated,org.hibernate.annotations.FilterDef,javax.persistence.OneToOne,com.trgr.cobalt.dataroom.datasource.config.core.CoreEntity,org.springframework.transaction.annotation.Transactional,com.trgr.cobalt.infrastructure.util.enums.EnumConversion,org.springframework.context.annotation.Configuration,com.trgr.cobalt.infrastructure.spring.domain.UpdatedFields,com.trgr.cobalt.infrastructure.spring.documentation.SampleValue,org.springframework.context.annotation.Bean,org.codehaus.jackson.annotate.JsonProperty,javax.persistence.Basic,org.codehaus.jackson.map.annotate.JsonSerialize,com.trgr.cobalt.infrastructure.spring.validation.Required,com.trgr.cobalt.dataroom.datasource.config.core.CoreTransactionNever,org.springframework.context.annotation.Profile,com.trgr.cobalt.infrastructure.spring.stereotype.Persistor,javax.persistence.Transient,com.trgr.cobalt.infrastructure.spring.validation.NotNull,javax.validation.constraints.Size,javax.persistence.Entity,javax.persistence.PrimaryKeyJoinColumn,org.hibernate.annotations.BatchSize,org.springframework.stereotype.Service,org.springframework.beans.factory.annotation.Value,javax.persistence.Inheritance
[javac] error: warnings found and -Werror specified
Run Code Online (Sandbox Code Playgroud)
TIA!
前downvoting或接近要求时这个问题,请看到这个问题是关于JDK 7中没有6,它具有不受任何重复的线程解决的第二个问题,"Q2"这个问题是关于4不仅2个的java.exe实例.谢谢!
我刚刚安装了Oracle的Java SE JDK(64位),这导致了以下目录布局,并且不知何故有两个 JRE:
C:\Program Files\Java\
\jdk1.7.0_40
\jre
\jre7
Run Code Online (Sandbox Code Playgroud)
我现在是四个 java.exe可执行文件的自豪拥有者:
C:\Program Files\Java\jdk1.7.0_40\bin\java.exe
C:\Program Files\Java\jdk1.7.0_40\jre\bin\java.exe
C:\Program Files\Java\jre7\bin\java.exe
C:\Windows\System32\java.exe
Run Code Online (Sandbox Code Playgroud)
Q1:我应该将哪一个放入我的搜索路径来执行基于Java的应用程序?
Q2:我是否需要将无限制JCE策略文件放入我的搜索路径中相应JRE的安全子目录中,或者也放入所有其他目录中才能正常工作?
我们目前正在使用与Java 1.6一起运行的Websphere 8.0.0.7.不幸的是,我们想要集成到门户中的一些portlet需要运行Java 1.7.
在Websphere 8.0.0.7下有没有(简单)方法使用Java 1.7?我为Websphere 8.5找到了很多答案,但尤其不适用于8.0.是否可以使用1.7?
非常感谢您的努力!
菲利普
有一段复杂的代码可以执行许多复杂的数学运算.
当它由maven在jdk 1.7上构建和测试时,它会通过所有测试.使用jdk 1.8时失败.
试图在调试器中找到计算出错的地方似乎几乎没有希望.
我有什么选择?有没有一种工具可以在我的代码中扫描jdk 1.7和1.8之间的不兼容性?
我是最好的选择,在两个单独的调试器中运行代码,看看差异在哪里?
编辑:
@PhilippClaßen到目前为止,这是最可能的原因.我希望有一种自动检查方法.
@dkatzel这段代码不是我写的,评论很差,并且做了对我来说是"木头"的科学计算.
@Mike Samuel我认为这种方法没有比并行运行两个调试器更好的了.
谢谢大家的帮助.似乎两个调试器是最好的方法.
编辑2 原始代码的作者依赖于哈希映射排序.那就是问题所在.
Java处理DateFormatSymbols允许根据给定的语言环境生成星期几。时间单位(秒,分钟...)是否具有相同的机理?
到目前为止,我只找到java.util.concurrent.TimeUnit和java.time.temporal.ChronoUnit其处理的英文列表。但没有本地化版本。
注意:我只是对“ vanilla” java7中的功能感兴趣(我宁愿创建自己的系统,也不愿加载完整的api)
Guava的ListenableFuture库提供了一种将回调添加到未来任务的机制。这样做如下:
ListenableFuture<MyClass> future = myExecutor.submit(myCallable);
Futures.addCallback(future, new FutureCallback<MyClass>() {
@Override
public void onSuccess(@Nullable MyClass myClass) {
doSomething(myClass);
}
@Override
public void onFailure(Throwable t) {
printWarning(t);
}}, myCallbackExecutor);
}
Run Code Online (Sandbox Code Playgroud)
您可以ListenableFuture通过调用其get函数来等待a 完成。例如:
MyClass myClass = future.get();
Run Code Online (Sandbox Code Playgroud)
我的问题是,一定将来的所有回调都可以保证在get终止之前运行。即如果将来在许多回调执行程序上注册了许多回调,那么所有的回调会在get返回之前完成吗?
编辑
我的用例是,我将一个构建器传递给许多类。每个类填充构建器的一个字段。我希望所有字段都异步填充,因为每个字段都需要一个外部查询来生成该字段的数据。我希望给我打电话的用户asyncPopulateBuilder收到一个Future可以打电话的电话,get并确保所有字段都已填充。我认为的方法如下:
final Builder b;
ListenableFuture<MyClass> future = myExecutor.submit(myCallable);
Futures.addCallback(future, new FutureCallback<MyClass>() {
@Override
public void onSuccess(@Nullable MyClass myClass) {
b.setMyClass(myClass);
}
@Override
public void onFailure(Throwable t) {
printWarning(t); …Run Code Online (Sandbox Code Playgroud) 我有一个观看目录的观看服务.创建文件后,我正在处理目录并更新树视图.
这正常的ENTRY_DELETE,但有时(并不总是)时WatchEvent的ENTRY_CREATE情况发生时,该文件还没有被写入到磁盘.
我通过创建new File()监视服务注册的目录以及文件的路径并检查exists()方法来确认这一点,因此操作系统似乎在实际创建文件之前触发create事件.
这个问题似乎是同一个问题,但从文件夹的角度来看.
我可以解决这个问题吗?