我知道如何使用PDFBox来阅读整个pdf文件的文本PDFTextStripper.getText(PDDocument).
我还有一个关于如何使用特定页面获取对象引用的示例PDDocumentCatalog.getAllPages().get(i).
如何使用PDFBox获取一个页面的文本,因为我在PDPage课堂上没有看到任何这样的方法?
当我在JDesktopPane中有一个JInternalFrame时,JInternalFrame是可移动的(这很好).但是,可以将它移到JDesktopPane的可见范围之外(我不是很喜欢)
为了亲眼看看,这里有一些示例代码:
public static void main(String[] args) {
JFrame frame = new JFrame("JDesktopPane");
JDesktopPane tableDisplay = new JDesktopPane();
JInternalFrame internalFrame = new JInternalFrame("JInternalFrame",true,true,true,true);
internalFrame.setContentPane(new JLabel("Content"));
internalFrame.pack();
internalFrame.setVisible(true);
tableDisplay.add(internalFrame, JDesktopPane.POPUP_LAYER);
frame.setContentPane(tableDisplay);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setMinimumSize(new Dimension(400, 300));
frame.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)
是否可以设置JInternalFrame或JDesktopPane,以便它们不允许这样做?
我们已经git-lfs成功使用了几年。但是,我们会定期添加包含在git-lfs. 我们转移到的最新文件类型之一git-lfs是我们的所有*.csv文件。
问题是我们*.csv的历史记录中有几个非常大的文件在初始迁移中没有被捕获,我也需要将这些文件移动到。git-lfs(我们正在从 BitBucket 迁移到 GitHub,GitHub 对允许的最大文件大小有更严格的规则,因此我需要确保所有旧的大文件也都打开git-lfs。)
最明显的方法是这样的:
git lfs migrate import --everything --include="*.csv"
当我运行该命令时,它似乎成功了。它重写历史,输出看起来像这样:
PS E:\source\swyfft_web_ken> git lfs migrate import --everything --include="*.csv"
migrate: Sorting commits: ..., done.
migrate: Rewriting commits: 100% (131623/131623), done.
development 1b042eeebfb346af8f7e90d1f6c7b6abfc64d014 -> 1b042eeebfb346af8f7e90d1f6c7
b6abfc64d014
feature/ks/20200205_ImsWebServicesV2 e2b5b267d5215ef48d5ef4e3f0924613c6076cd7 -> e2b5b267d5215ef48d5ef4e3f092
4613c6076cd7
master 2029338210697c795a536faa9dd4c141c6edd6c2 -> 2029338210697c795a536faa9dd4
c141c6edd6c2
1.0 752143ee1b87020e9b285886b3986703d6c74a38 -> 752143ee1b87020e9b285886b398
6703d6c74a38
1.1 5fefda3de45651107218a953e789ea5121002756 -> 5fefda3de45651107218a953e789
ea5121002756
1.2 30f87f08e672d10de0029985ad5acc1bf5a82457 -> 30f87f08e672d10de0029985ad5a
cc1bf5a82457 …Run Code Online (Sandbox Code Playgroud) 希望有人能帮助我解决这个奇怪的问题.我正在尝试运行webstart插件但它似乎无法找到正在生成的jar中的主类.pom就像它可以获得的那样简单,并且类Test存在,并且正在被编译并放置在jar中.有人可以指点我正确的方向吗?
<project>
<modelVersion>4.0.0</modelVersion>
<name>Desktop Components</name>
<groupId>com.test</groupId>
<artifactId>test</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo.webstart</groupId>
<artifactId>webstart-maven-plugin</artifactId>
<executions>
<execution>
<phase>process-resources</phase>
<goals>
<goal>jnlp-download-servlet</goal>
</goals>
</execution>
</executions>
<configuration>
<jnlpFiles>
<jnlpFile>
<jarResources>
<jarResource>
<groupId>com.test</groupId>
<artifactId>test</artifactId>
<version>1.0</version>
<mainClass>Test</mainClass>
</jarResource>
</jarResources>
</jnlpFile>
</jnlpFiles>
</configuration>
</plugin>
</plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
这是Maven的跟踪:
C:\TEMP\webstart-test>mvn webstart:jnlp –e
+ Error stacktraces are turned on.
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Desktop Components
[INFO] task-segment: [webstart:jnlp] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] Preparing webstart:jnlp
[INFO] ------------------------------------------------------------------------
[INFO] Building Desktop Components
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources {execution: …Run Code Online (Sandbox Code Playgroud) 我在一个大型的Java项目上工作.我们使用maven作为构建工具,并使用Intellij(14)作为我的IDE.
目前,如果我构建整个项目(约15个模块),大约需要3分钟.由于我们使用代码的方式(即使在开发中),我最终经常进行完整的构建.在"测量得到的东西得到管理"的基础上,我希望能够监控/记录:
一种方法可能是将maven输出转储到文件,然后有一个进程来读取这些/计算我想要的统计信息.我该怎么做呢?
为了清楚起见,我不是要求就如何减少构建周期运行时提出意见/建议.我们已经在这方面做了相当多的工作,并且正在继续努力 - 事实上,我真的在寻找一种方法来监控我们在这方面的有效进展.
我正在将Java代码库从Java 7(80)迁移到Java 8(162).(是的......我们处于技术前沿.)
在切换之后,我在一个高度并发的环境中从部署的jar加载XML资源文件时遇到了问题.正在使用try-with-resourcesSAX 访问和解析资源文件:
try {
SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
try (InputStream in = MyClass.class.getResourceAsStream("resource.xml")) {
parser.parse(in, new DefaultHandler() {...});
}
} catch (Exception ex) {
throw new RuntimeException("Error loading resource.xml", ex);
}
Run Code Online (Sandbox Code Playgroud)
如果我错了,请纠正我,但这似乎是通常建议阅读资源文件的方法.
这在IDE中运行良好,但是一旦它被部署在jar中,我经常(但不是普遍的,并且不总是使用相同的资源文件)得到一个IOException,具有以下堆栈跟踪:
Caused by: java.io.IOException: Stream closed
at java.util.zip.InflaterInputStream.ensureOpen(InflaterInputStream.java:67)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:142)
at java.io.FilterInputStream.read(FilterInputStream.java:133)
at com.sun.org.apache.xerces.internal.impl.XMLEntityManager$RewindableInputStream.read(XMLEntityManager.java:2919)
at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:302)
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1895)
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.scanName(XMLEntityScanner.java:728)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1279)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2784)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:842)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:327)
at …Run Code Online (Sandbox Code Playgroud) 使用maven-webstart-plugin构建jnlp时,我发现运行时依赖项未包含在jnlp中.
我正在使用这样的模板:
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="$jnlpspec" codebase="${url}/${appName}" href="${outputFile}">
<information>
<title>${appName}</title>
<vendor>$project.Organization.Name</vendor>
<homepage href="${url}/${appName}"/>
<offline-allowed/>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="$j2seVersion"/>
$dependencies
</resources>
<application-desc main-class="${main}" />
</jnlp>
Run Code Online (Sandbox Code Playgroud)
如何包含运行时依赖项?好吧,我可以单独包括它们:
<plugin>
<groupId>org.codehaus.mojo.webstart</groupId>
<artifactId>webstart-maven-plugin</artifactId>
<configuration>
<dependencies>
<includes>
<include>groupId:artifactId</include>
...
</includes>
</dependencies>
...
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
...但理想情况下,每次我向项目添加运行时依赖项时,我都不想记得要更改它.
有没有办法指示插件包含所有运行时依赖项?
在最新版本的 Windows 中通过任务计划程序启动任务时,如果任务是“无论用户是否登录都运行”,则该任务将不会交互运行 - 即它不会启动 UI。
作为参考,这是根据Microsoft 的说法,并在此SuperUser 问题和此StackOverflow 问题中突出显示:
您可以指定任务应该运行,即使计划运行任务的帐户在触发任务时未登录也是如此。为此,请选择标有“无论用户是否登录都运行”的单选按钮。如果选择此单选按钮,任务将不会交互运行。要使任务以交互方式运行,请选择“仅在用户登录时运行”单选按钮。
然而,我的问题是由此衍生的。
TaskScheduler 启动的任务是一个 Java 客户端应用程序,可以指示它运行进程 - 这些进程通过客户端应用程序中的 ProcessBuilder 运行。因此,该客户端应用程序被隐藏/不启动 UI 是可以的 - 事实上,没有 UI。
但是,如果如上所述通过 TaskScheduler 启动客户端应用程序以“无论用户是否登录都运行”,则客户端应用程序中由 ProcessBuilder 启动的任何进程也无法交互运行/无法显示 UI。这是一个问题,因为客户端启动的一些进程是 UI 应用程序。
我不确定为什么会出现这种情况,但实际上我正在尝试找出是否有解决方法 - 例如可以添加一些环境变量或属性来获得由(不可见)客户端启动的可见进程。
有什么想法吗?
我发现我有几个地方设有公共静态内部类,扩展"帮助"类使我的代码更加类型安全,在我看来,可读.例如,假设我有一个"SearchCriteria"类.我搜索的不同内容有很多共性(搜索术语,然后是一组搜索术语类型,日期范围等).通过在静态内部类中扩展它,我将扩展和可搜索的紧密耦合在一起有特定差异的班级.这在理论上似乎是一个坏主意(Tight Coupling Bad!),但扩展特定于这个可搜索的类(One Class,One Purpose).
我的问题是,根据您的经验,使用静态内部类(或者您的语言等同于什么)使您的代码更具可读性/可维护性,或者最终在EOF中咬你?
此外,我不确定这是否是社区维基材料.
我的问题是这样的:我正在使用 aWatchService来获取有关特定文件夹中新文件的通知,现在如果在所述文件夹中移动/复制或创建文件,则会触发事件并返回新文件的名称。现在的问题是,如果我尝试访问该文件并且该文件尚未完全存在(例如复制仍在进行中),则会引发异常。我尝试做的是这样的事情:
RandomAccessFile raf = new RandomAccessFile(fileName, "rw");
FileChannel fc = raf.getChannel();
FileLock lck = fc.lock();
Run Code Online (Sandbox Code Playgroud)
但即使获得了锁,如果我尝试写入文件,有时仍然会引发异常,因为另一个进程仍然有一个打开的句柄。
现在,如何锁定 Java 中的文件以实现真正的独占访问?
java ×6
maven ×2
build ×1
class ×1
compilation ×1
file ×1
file-locking ×1
git ×1
git-lfs ×1
github ×1
inheritance ×1
ioexception ×1
jar ×1
java-8 ×1
jdesktoppane ×1
jnlp ×1
locking ×1
maven-2 ×1
nested-class ×1
oop ×1
pdfbox ×1
swing ×1