标签: java-7

Java 7中的编译器更改

在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)

java compiler-construction javac java-7

5
推荐指数
0
解决办法
246
查看次数

方法models.MyModel中操作数堆栈上的错误类型

这是我的模型文档:

@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方法的情况下避免它?

谢谢你的帮助!

java-7 playframework playframework-2.0

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

32位Windows 7上的Java 7 - Java Webstart - 无法加载资源

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 …

java 32-bit java-web-start windows-7 java-7

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

java 7升级和hibernate注释处理器错误

我收到以下警告,这似乎是触发后续警告和错误.我一直在谷歌搜索疯狂,但没有找到任何清楚说明我应该做什么来解决这个问题.执行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!

migration hibernate-annotations java-7

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

Oracle JDK安装两个JRE?

前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 jce java-7

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

Websphere 8.0和Java 1.7

我们目前正在使用与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?

非常感谢您的努力!

菲利普

java websphere websphere-portal java-7

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

java版本之间的不兼容性

有一段复杂的代码可以执行许多复杂的数学运算.

当它由maven在jdk 1.7上构建和测试时,它会通过所有测试.使用jdk 1.8时失败.

试图在调试器中找到计算出错的地方似乎几乎没有希望.

我有什么选择?有没有一种工具可以在我的代码中扫描jdk 1.7和1.8之间的不兼容性?

我是最好的选择,在两个单独的调试器中运行代码,看看差异在哪里?

编辑:

@PhilippClaßen到目前为止,这是最可能的原因.我希望有一种自动检查方法.

@dkatzel这段代码不是我写的,评论很差,并且做了对我来说是"木头"的科学计算.

@Mike Samuel我认为这种方法没有比并行运行两个调试器更好的了.

谢谢大家的帮助.似乎两个调试器是最好的方法.

编辑2 原始代码的作者依赖于哈希映射排序.那就是问题所在.

java incompatibility java-7 java-8

5
推荐指数
2
解决办法
147
查看次数

Java中是否已经存在i18n时间单位列表?

Java处理DateFormatSymbols允许根据给定的语言环境生成星期几。时间单位(秒,分钟...)是否具有相同的机理?

到目前为止,我只找到java.util.concurrent.TimeUnit和java.time.temporal.ChronoUnit其处理的英文列表。但没有本地化版本。

注意:我只是对“ vanilla” java7中的功能感兴趣(我宁愿创建自己的系统,也不愿加载完整的api)

java internationalization java-7

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

ListenableFuture回调执行顺序

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)

java parallel-processing guava java-7

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

在写入文件之前触发了Java 7 Watch Service ENTRY_CREATE

我有一个观看目录的观看服务.创建文件后,我正在处理目录并更新树视图.

这正常的ENTRY_DELETE,但有时(并不总是)时WatchEvent的ENTRY_CREATE情况发生时,该文件还没有被写入到磁盘.

我通过创建new File()监视服务注册的目录以及文件的路径并检查exists()方法来确认这一点,因此操作系统似乎在实际创建文件之前触发create事件.

这个问题似乎是同一个问题,但从文件夹的角度来看.

我可以解决这个问题吗?

java java-7 watchservice

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