小编Kul*_*ain的帖子

Java:wait()从synchronized块释放锁定

我的印象是wait()释放所有锁,但我发现这篇帖子说的

"在同步方法中调用wait是一种获取内部锁的简单方法"

请澄清我有点困惑.

http://docs.oracle.com/javase/tutorial/essential/concurrency/guardmeth.html

java concurrency multithreading locking wait

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

用于OpenAPI 3.0的Swagger Codegen(带有maven插件)

我想使用Swagger Codegen for OpenAPI 3.0 YAML文件.我看到Swagger Codegen 3.0.0-rc0可用.但是当我尝试使用它时,我遇到了问题.以下是详细信息:

我的pom.xmlswagger-codegen插件文件:

<plugin>
  <groupId>io.swagger</groupId>
  <artifactId>swagger-codegen-maven-plugin</artifactId>
  <version>3.0.0-rc0</version>
  <executions>
    <execution>
      <goals>
        <goal>generate</goal>
      </goals>
      <configuration>
        <inputSpec>${basedir}/src/main/resources/mySpec.yaml</inputSpec>
        <output>target/generated-sources</output>
        <language>spring</language>
        <generateApis>false</generateApis>
        <modelPackage>com.kj.model</modelPackage>
        <apiPackage>com.kj</apiPackage>
        <configOptions>
          <sourceFolder>swagger</sourceFolder>
          <library>spring-mvc</library>
          <interfaceOnly>true</interfaceOnly>
          <useBeanValidation>true</useBeanValidation>
          <dateLibrary>java8</dateLibrary>
          <java8>true</java8>
        </configOptions>
      </configuration>
    </execution>
  </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

使用上面的插件,当我运行maven构建时,我得到了这个ServiceConfigurationError,这里是堆栈跟踪:

Exception in thread "main" java.util.ServiceConfigurationError: io.swagger.codegen.CodegenConfig: Provider io.swagger.codegen.languages.java.JavaClientCodegen not found
    at java.util.ServiceLoader.fail(ServiceLoader.java:239)
    at java.util.ServiceLoader.access$300(ServiceLoader.java:185)
    at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:372)
    at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
    at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
    at io.swagger.codegen.CodegenConfigLoader.forName(CodegenConfigLoader.java:19)
    at io.swagger.codegen.config.CodegenConfigurator.toClientOptInput(CodegenConfigurator.java:392)
    at io.swagger.codegen.plugin.CodeGenMojo.execute(CodeGenMojo.java:512)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我 pom文件的maven插件部分添加了swagger-codegen-generators依赖项:

<dependencies> …
Run Code Online (Sandbox Code Playgroud)

maven swagger openapi swagger-codegen openapi-generator

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

如何使用eclipse和bndtools将jar转换为OSGi包

我正在寻找一个循序渐进的指南,使用eclipse bndtools插件将jar转换为OSGi包.我知道可以使用命令行使用bnd来完成它,但很高兴知道如何通过IDE执行相同的操作.

我可能会遗漏一些东西,但本教程仅解释了如何从头开始创建项目.

java eclipse osgi bnd

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

Java VisualVM不显示/列出我的tomcat java进程

我正在使用jdk64我的java版本1.6.0_24.我在Windows Server 2008上以管理员身份运行这两个(Tomcat java进程和VisualVM)进程.

Tomcat正在运行-Xmx7196m,jvisualvm运行时-Xms24m-Xmx256m.这可能是原因吗?

java profiling visualvm jvisualvm

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

Swagger-codegen强制执行定义中的"必需"字段

我在yaml文件中标记了这些字段(swagger规范)

  MyType:
    type: object
    required:
      - name
      - amount
Run Code Online (Sandbox Code Playgroud)

我正在使用带有这些配置的swagger codegen maven插件:

<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>2.2.3</version>

<language>spring</language>
<library>spring-mvc</library> 
Run Code Online (Sandbox Code Playgroud)

我希望在生成的类中也需要规范中的必填字段.但目前还没有发生这种情况.

有没有配置选项可以做到这一点?我有,<useBeanValidation>true</useBeanValidation>但这似乎对我不起作用.

我在Swagger-codegen GitHub页面上的Definitions中看到了一个类似的请求执行"必需"字段,其中建议是使用的useBeanValidation,我确实拥有它,但它仍然无效.

在Swagger-codegen GitHub页面上创建了此请求:Swagger-codegen强制生成的模型类中的"required"字段

maven-plugin swagger swagger-codegen

9
推荐指数
1
解决办法
1187
查看次数

Intellij 编译器错误 - 无法从临时位置复制到输出目录

IntelliJ 在我的机器上运行良好,但在编译时突然开始出现这些错误

“无法从临时位置复制到输出目录:用户临时目录中的临时编译类的路径”

如果我从项目中删除模块并再次添加它并编译文件,它会正常工作一段时间,然后开始出现此错误。

尝试清理用户目录、关闭并重新启动等,但没有成功

Windows 7 上的 IntelliJ IDEA 11.1.3。也在 Windows 7 上的 IntelliJ IDEA 12.0.1 上。

intellij-idea

6
推荐指数
2
解决办法
8155
查看次数

Jena TDB使用API​​存储和查询

我是Jena-TDB和SPARQL的新手,所以这可能是一个愚蠢的问题.我在Windows XP上使用tdb-0.9.0.

我正在为我的trail_1.rdf文件创建TDB模型.我在这里的理解(如果我错了,请纠正我)是以下代码将读取TDB模型中给定的rdf文件,并且还存储/加载(不确定什么是更好的单词)给定目录中的模型D:\Project\Store_DB\data1\tdb:

// open TDB dataset
String directory = "D:\\Project\\Store_DB\\data1\\tdb";
Dataset dataset = TDBFactory.createDataset(directory);

Model tdb = dataset.getDefaultModel();

// read the input file
String source = "D:\\Project\\Store_DB\\tmp\\trail_1.rdf";
FileManager.get().readModel( tdb, source);

tdb.close();
dataset.close();
Run Code Online (Sandbox Code Playgroud)

这种理解是否正确?


根据我的理解,因为现在模型存储在D:\Project\Store_DB\data1\tdb目录中,我应该能够在稍后的某个时间点对它运行查询.

因此,在D:\Project\Store_DB\data1\tdb我尝试跟踪时查询TDB商店,但它没有打印任何内容:

String directory = "D:\\Project\\Store_DB\\data1\\tdb" ;
Dataset dataset = TDBFactory.createDataset(directory) ;

Iterator<String> graphNames = dataset.listNames();
while (graphNames.hasNext()) {
    String graphName = graphNames.next();
    System.out.println(graphName);
}
Run Code Online (Sandbox Code Playgroud)

我也尝试了这个,也没有打印任何东西:

    String directory = "D:\\Project\\Store_DB\\data1\\tdb" ;
    Dataset dataset = TDBFactory.createDataset(directory) ;

    String sparqlQueryString …
Run Code Online (Sandbox Code Playgroud)

java jena

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

jvisualvm:卡在“正在加载堆转储...”屏幕上

我使用的是 jdk64,我的 java 版本是“1.6.0_24”。我的 tomcat 使用 -Xmx7196m 运行,而 jvisualvm 使用 -J-Xms2048m -J-Xmx3072m 运行。我对我的 tomcat java 进程进行了堆转储,我的.hprof文件大小约为 5.5 GB。当我尝试打开这个堆转储时,它只是停留在Loading Heap Dump...屏幕上。

我还查看了 VisualVM 在尝试打开堆转储时的堆消耗情况,但只有 500MB 左右。

注意:我确实看过jvisualvm: Stuck on “Loading Heap Dump” screen question 但它是不同的并且没有解决我的问题。

java profiling visualvm hprof jvisualvm

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