在我看来,MappedByteBuffer.isLoaded()始终false在Windows上返回.当我在BSD Unix上测试时,我得到true了相同的测试数据.
我应该担心吗?isLoaded()无论我使用什么尺寸的数据,我都无法在Windows上返回true.
这是我的测试代码供参考:
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.util.logging.Level;
import java.util.logging.Logger;
public class MemMapTest {
private static final String FILENAME = "mydata.dat";
private static final int MB_1 = 1048576; // one Mbyte
private static final byte[] testData = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; // len = 10 bytes
public static void main(String[] args) throws FileNotFoundException, IOException {
// Create a …Run Code Online (Sandbox Code Playgroud) 也许我正在以错误的方式解决这个问题,但我错过了一些绝对的 put方法ByteBuffer.
如果你看一下,ByteBuffer你会发现大多数put方法都有绝对变量和相对变量.
除了:
byte数组的部分写入ByteBuffer.ByteBuffer到ByteBuffer...而且我需要那些.
要明确ByteBuffer有方法:
put(byte[] src, int offset, int length)
put(ByteBuffer src)
Run Code Online (Sandbox Code Playgroud)
但缺乏:
put(int index, byte[] src, int offset, int length)
put(int index, ByteBuffer src)
Run Code Online (Sandbox Code Playgroud)
我有理由为什么我不想移动缓冲区的位置指针,因此我只想使用绝对put方法.
知道为什么这些方法被遗漏了吗?
我当然可以在不移动缓冲区位置指针的情况下模仿丢失的方法,但这将涉及在源字节上循环.Javadoc明确指出,这些方法(可能)比移动更有效,而不是循环并逐个移动字节.我相信Javadoc,因为我的测试表明相同.我需要从实施中尽可能多地挤出速度,因此我当然倾向于利用我可以获得的任何批量方法......如果它们存在的话.
Incedentially ByteBuffer也缺少get部分字节数组移动的绝对方法.但我目前实际上并不需要这样的方法.但又奇怪的是它不存在.
我正在尝试将集中资源(例如图像文件,js文件)包含到我的Maven生成的javadoc中.这种集中资源将来自依赖.(在我的情况下,我希望始终包含某些资源,Javascript文件,允许在Javadoc中对示例代码进行很好的语法突出显示,以及使用特殊的样式表)
如果您在本地将资源包含在项目中,那么有大量有关如何执行此操作的信息.这不是我想要的,因为我需要为我公司的每个项目做这件事.因此,配置需要进入公司范围的POM文件,我们公司的所有项目都从该文件继承.
请注意,对于样式表,这很容易做到,因为Maven插件允许此文件来自依赖项.我正在寻找类似的东西,除了'资源'.基本上,我不得不将像公司徽标这样的东西复制到每个项目中似乎很愚蠢.这就是我想要避免的.
如果Maven Javadoc插件没有直接支持这个(我不知道是不是这样),那么我猜测另一种方法可能是使用Maven Dependency Plugin将我的集中式javadoc资源复制到项目中.然而,这种方法至少有两个缺点:
这种依赖不是项目的真正依赖,不应该这样说.它是maven-javadoc-plugin的依赖项,而不是项目本身的依赖项.
我需要找到一种方法,以便只在请求javadoc生成时才将依赖项复制到项目中.
请帮忙.
我想从命令行执行插件目标,但执行插件的多次执行.为此,我的POM看起来像这样:
<plugin>
<groupId>xxx.yyy</groupId>
<artifactId>zzz</artifactId>
<version>1.1.6</version>
<executions>
<execution>
<id>default-cli-1</id>
<goals>
<goal>mygoal</goal>
</goals>
<configuration>
.... config1 ....
</configuration>
</execution>
<execution>
<id>default-cli-2</id>
<goals>
<goal>mygoal</goal>
</goals>
<configuration>
.... config2 ....
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我想做的是:
mvn xxx.yyy.zzz:mygoal
Run Code Online (Sandbox Code Playgroud)
然后执行两次执行.但我无法弄清楚如何.
我知道<id>从命令行执行时我不能使用.这就是它的意思default-cli.然而,<id>必须是唯一的,<executions>这意味着我只能把它default-cli放在一个execution.
Maven 3.0.5版.
我有一个项目需要依赖于另一个项目生成的 ZIP 文件。那个“其他项目”不在我的控制之下。正确构建我的项目需要 ZIP 文件。执行我的项目不需要它。我需要 Maven 为我下载 ZIP 文件。
我目前创建了对 ZIP 工件的依赖,如下所示:
<dependency>
<groupId>org.foo</groupId>
<artifactId>zeus</artifactId>
<version>1.1</version>
<type>zip</type>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我的问题是范围。如果我使用任何东西,但test它会带来很多来自“其他项目”的传递依赖性,这会搞砸我自己的项目。使用testas 范围实际上可以完成这项工作,但它在我的 IDE 中显示为测试依赖项。所以我觉得我做错了什么。这不是测试依赖性!
我查看了可用的 Maven 范围(“编译”、“提供”等),但似乎找不到与我的用例相匹配的范围。难道我做错了什么?
好吧,案例很简单。我需要能够以编程方式启用/禁用 JDK 类 (HttpURLConnection) 的日志记录。
public class HttpLoggingTest {
/**
Just a dummy to get some action from HttpURLConnection
*/
private static void getSomething(String urlStr) throws MalformedURLException, IOException {
System.out.println("----- " + urlStr);
HttpURLConnection conn = (HttpURLConnection) new URL("http://www.google.com").openConnection();
for (Entry<String, List<String>> header : conn.getHeaderFields().entrySet()) {
System.out.println(header.getKey() + "=" + header.getValue());
}
conn.disconnect();
}
public static void main(String[] args) throws MalformedURLException, IOException {
// HERE : Enable JDK logging for class
// sun.net.www.protocol.http.HttpURLConnection
getSomething("http://www.goodle.com");
// HERE: Disable JDK logging for …Run Code Online (Sandbox Code Playgroud) Java 9 昨天发布了,我很想通过一个恰好在 Solaris x64 服务器上的测试套件来试一试。但是,我不知道如何为 Solaris X64 下载 Java9 (JRE)。这是 Java 9 的样子:
根据此,Solaris x64是支持的平台。但根据这个,Solaris x64上不再是一个认证为Oracle的Java平台。(Java 8 的等效列表在这里)
我不明白这让我何去何从。
问题:
sparcv9与x64在URL中。用于生产目的是否安全?使用会不会有法律问题?与 Solaris X64 相关的各种 JDK 发行版概述:
BellSoft 的 Liberica支持 Solaris X64(以及 Solaris SPARC)
采用 OpenJDK似乎正在放弃对 Solaris 的支持。对于 JDK8,他们确实支持 Solaris,但仅支持 SPARC,而不支持 Intel(奇怪的选择)。对于 JDK 的更高版本,根本没有提到 Solaris。
我正在尝试使用 Google 的Jib 项目和Jib Maven Plugin构建 Docker 映像。
我不明白如何指定 JRE 版本。
我知道我可以在插件的 config 中进行自定义,例如:
<configuration>
<from>
<image>gcr.io/distroless/java</image>
</from>
</configuration>
Run Code Online (Sandbox Code Playgroud)
但这对于将使用的实际 JRE 版本意味着什么?如果我想具体说 JRE 8u172 怎么办?
Jib 项目将此声明为一个功能:
可重现- 使用相同内容重建容器映像始终生成相同的映像。
因此我假设必须有某种方法来锁定 JRE 版本?
级别:Java 和 Maven 高级,Docker 新手。
问题是如何使用 Oracle JDBC Thin 驱动程序并仅在 URL 中指定加密来强制加密?
据了解,我们需要将Oracle Net参数设置oracle.net.encryption_client为required。(参考链接)
供参考:我们目前以 TNS 格式指定 Oracle JDBC URL,例如:
DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = tcp)(HOST = myora1.corp.net)(PORT = 1521))
(ADDRESS = (PROTOCOL = tcp)(HOST = myora2.corp.net)(PORT = 1521)))
(FAILOVER=ON)
(CONNECT_DATA = (SERVER = dedicated)(SERVICE_NAME = foobar))
Run Code Online (Sandbox Code Playgroud)
它会转换为以下 JDBC URL 字符串:
jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = tcp)(HOST = myora1.corp.net)(PORT = 1521))(ADDRESS = (PROTOCOL = tcp)(HOST = myora2.corp.net)(PORT = 1521)))(FAILOVER=ON)(CONNECT_DATA = (SERVER = dedicated)(SERVICE_NAME …Run Code Online (Sandbox Code Playgroud) 我正在使用jaxws-maven-plugin为 Web 服务消费者应用程序执行 wsimport。我正在使用-clientjarwsimport 上的选项,该选项是 2010 年随 JAX-WS 2.2.2 RI 引入的。我这样做是因为我想将 WSDL 捆绑在 jar 中。
我在制作 pom 时没有任何问题。对于插件配置我做了类似的事情:
<configuration>
...
<args>
<arg>-clientjar</arg>
<arg>bundled-wsdl.jar</arg>
</args>
</configuration>
Run Code Online (Sandbox Code Playgroud)
当我执行构建时,我创建了 jar,让我们调用它myapp.jar,bundled-wsdl.jar其中包含文件。在bundled-wsdl.jar的 META-INF 目录中,我找到了 wsdl 和 xsd,就像我喜欢的那样。我对使用该选项生成的 java 代码也非常满意-clientjar。到目前为止,一切都很好。
不过这个东西应该在myapp.jar的 META-INF 里吧?事实上,它位于bundled-wsdl.jar的 META-INF 中,这对我没有多大帮助。
有趣的是,我实际上在myapp.jarMETA-INF 中获取了一个 wsdl 文件,这使得该应用程序能够实际工作。我不知道它是如何到达那里的。此外,xsd 文件不存在,仅在bundled-wsdl.jarMETA-INF 中。
基本问题是如何-clientjar在 Maven 项目中正确使用 wsimport 选项?
Java 1.7.0_45。
如何在XML文件中声明TopComponent时以编程方式正确退出NetBeans平台应用程序?
我在Centos6上使用JDK8运行Tomcat8.我使用以下选项启用JMX:
CATALINA_OPTS="${CATALINA_OPTS} -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9123 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.local.only=true"
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我检查打开了哪些端口时,我发现这些端口会监听所有IP:
netstat -plunt | grep java
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 :::60555 :::* LISTEN 22752/java
tcp 0 0 ::ffff:127.0.0.1:8080 :::* LISTEN 22752/java
tcp 0 0 :::9123 :::* LISTEN 22752/java
tcp 0 0 :::40867 :::* LISTEN 22752/java
Run Code Online (Sandbox Code Playgroud)
我想如果我配置-Dcom.sun.management.jmxremote.local.only=true所有端口应该只绑定到localhost(::ffff:127.0.0.1将出现在所有端口之前).
如何配置JMX仅绑定到localhost?
添加
我不创建JMX我使用Tomcat JMX : https://tomcat.apache.org/tomcat-8.0-doc/monitoring.html.