我刚看到目录观察者java 7的一个很棒的功能.它会在没有轮询目录的情况下告诉您目录中发生了什么变化.
1.)但它表示,如果文件系统不支持注册更改事件,它将回退到轮询.所有典型的linux和Windows文件系统(extX,ntfs,reiserXXX,jsf,zfs)是否都支持此功能?
2.)重命名目录中的文件是创建还是更改事件?或者是一个删除和一个创建?我可以在一个系统上测试它,但它对所有文件系统都是一样的吗?
由于Java代码可以在任何Java VM中运行,我想知道如何以编程方式识别支持哪种Unicode版本?
有没有人知道JDK1.6和JDK1.7之间的拖放行为的差异?将URL从浏览器拖放到需要支持JDK1.5,JDK1.6和JDK1.7的应用程序时,我遇到了不同(如下图所示).我现在想知道是否存在其他差异以及是否在某处记录了这些差异.
我遇到的不同行为是通过点击并拖动URL到Java应用程序来拖放来自浏览器(而不是来自地址栏但来自页面)的URL.在JDK1.6上,Transferable不支持它DataFlavor.javaFileListFlavor和它在JDK1.7上(尽管在请求它的传输数据时你得到一个空列表).以下代码说明了该问题.它打开一个JFrame可以拖放URL,如http://www.google.com,并打印出是否使用文件列表风格或URI列表风格
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.TransferHandler;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
public class DragAndDropTester {
private static DataFlavor URI_LIST_FLAVOR = null;
static {
try {
URI_LIST_FLAVOR = new DataFlavor( "text/uri-list;class=java.lang.String" );
}
catch ( ClassNotFoundException ignore ) {
}
}
public static void main( String[] args ) {
try {
EventQueue.invokeAndWait( new Runnable() {
public …Run Code Online (Sandbox Code Playgroud) 我试图找出与Java 7 x64中的BigIntegers相关的以下问题.我试图计算一个极高功率的数字.代码如下,然后是问题描述.
import java.math.BigInteger;
public class main {
public static void main(String[] args) {
// Demo calculation; Desired calculation: BigInteger("4096").pow(800*600)
BigInteger images = new BigInteger("2").pow(15544);
System.out.println(
"The number of possible 16 bpc color 800x600 images is: "
+ images.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
我遇到打印此操作结果的问题.当此代码执行时,它会打印消息但不打印值images.toString().
为了隔离问题,我开始计算2的幂,而不是在该行的注释中列出的所需计算.在我测试过的两个系统上,2^15544是触发问题的最小计算; 2^15543工作良好.
我没有接近达到主机系统的内存限制,我不相信我甚至接近VM限制(无论如何运行VM参数-Xmx1024M -Xms1024M都没有效果).
在互联网上寻找答案之后,我开始怀疑我在这些类型用于内部数据存储的数组()的最大大小BigInteger或者String与之相关的限制Integer.MAX_VALUE.如果问题在于String我认为可以扩展BigInteger并编写一个一次喷出几个字符的打印方法,直到整个BigInteger打印出来,但我宁愿怀疑问题出在其他地方.
感谢您抽出宝贵时间阅读我的问题.
就JavaDoc状态而言,MethodHandles.lookup()返回能够访问与此函数的调用者相同的方法/函数/构造函数的工具.具体来说,如果调用者可以访问某些私有数据,那么这个MethodHandles.Lookup工具.下面的代码表明这是错误的.哪里弄错了?
public class MethodHandlerAccessTest {
private static class NestedClass {
private static void foo(){}
}
@Test
public void testPrivateAccess() throws Throwable {
NestedClass.foo(); //compiles and executes perfectly
MethodType type = MethodType.methodType(void.class);
MethodHandles.Lookup lookup = MethodHandles.lookup();
MethodHandle mh = lookup.findStatic(NestedClass.class, "foo", type);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
这就是我得到的:
java.lang.IllegalAccessException:member is private:MethodHandlerAccessTest $ NestedClass.foo()void,来自java.lang.invoke.MethodHandles的java.lang.invoke.MemberName.makeAccessException(MemberName.java:507)的MethodHandlerAccessTest $ Lookup.checkAccess (MethodHandles.java:1182)java.lang上的java.lang.invoke.MethodHandles $ Lookup.checkMethod(MethodHandles.java:1162)java.lang上的$ Lookup.accessStatic(MethodHandles.java:591).在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:)的sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法)的MethodHandlerAccessTest.testPrivateAccess(MethodHandlerAccessTest.java:19)上的invoke.MethodHandles $ Lookup.findStatic(MethodHandles.java:587) 57)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:601)at org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall(FrameworkMethod. java:47)at org.junit.internal.runners.model.Re flectiveCallable.run(ReflectiveCallable.java:12)org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)在org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)在org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)在org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50 )org.junit.runners.ParentRunner $ 3.run(ParentRunner.java:238)org.junit.runners.ParentRunner $ 1.schedule(ParentRunner.java:63)at org.junit.runners.ParentRunner.runChildren(ParentRunner. java:236)org.junit.runners.ParentRunner.access $ 000(ParentRunner.java:53)org.junit.runners.ParentRunner $ 2.evaluate(ParentRunner.java:229)org.junit.runners.ParentRunner.run (ParentRunner.java:309)在org.eclipse.jdt.internal.junit.runner.TestExecution的org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50).运行(TestExecution.java:38)org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner. …
我将jdk升级到版本7_45.编译并执行jar后,工作正常,我将其打包到应用程序包中.但不幸的是,我收到此错误消息"LSOpenURLsWithRole()失败,错误-10810为文件/Users/.../MyApp.app".与jdk 8 Early Access相同的问题.我也.尝试在info.plist中为"JVMVersion"键设置不同的设置
由于jar本身工作正常,我可以通过将JavaApplicationStub替换为我自己的可执行文件来简单地调用"java -jar ./.../MyApp.jar"来解决这个问题.但不确定这是否是解决此问题的正确方法.有什么建议?谢谢.
我需要将图像(主要是JPEG)直接转换为PDF文档的PDF页面.
可能是图像的大小不同.
每个PDF页面都应具有与图像完全相同的尺寸.
因此每个页面仅包含全分辨率的图像.
如何实现这一点,页面设置为图像/内容的尺寸?
因为我看到了具有不同页面大小和方向的PDF文件,但是如何使用PDFBox完成?
Set<Object> removedObjs = new HashSet<>();
List<? extends MyEntity> delObjs = (List<? extends MyEntity>) new ArrayList<>(removedObjs);
Run Code Online (Sandbox Code Playgroud)
MyEntity 是标记界面.
上面的代码在java-7(java版本"1.7.0_91",准确)中工作正常,但在java-8(java版本"1.8.0_77")中没有
在Java8中,我收到以下异常:
incompatible types: ArrayList<Object> cannot be converted to List< ? extends MyEntity>
我测试的优先级&&,并||和我有令人困惑的例子.在Java中,&&运算符优先级高于运算符||.
所以,如果我们有这3个表达式:
//expr1 = true , expr2 = false; expr3 = false;
if(expr1 || expr2 && expr3);
Run Code Online (Sandbox Code Playgroud)
应评估为:
if(expr1 || (expr2 && expr3));
Run Code Online (Sandbox Code Playgroud)
所以expr2 && expr3应该在之前进行评估expr1.但是,这个例子:
int a1 = 10;
int a2 = 20;
System.out.println(a1 < a2 || ++a1 > a2 && ++a2 < a1);
System.out.println(a1);
System.out.println(a2);
Run Code Online (Sandbox Code Playgroud)
输出:
true
10
20
Run Code Online (Sandbox Code Playgroud)
这证明只有 a1 < a2被评估.你能解释为什么会这样吗?
java ×10
java-7 ×10
java-8 ×2
64-bit ×1
app-bundle ×1
biginteger ×1
closures ×1
directory ×1
jvm ×1
macos ×1
monitoring ×1
pdf ×1
pdfbox ×1
reflection ×1
registration ×1
swing ×1
unicode ×1