如果您想在全球范围内销售,拥有完全国际化的应用程序是必需的.在Java中,我们使用资源包并解决静态文本代码的问题.
但是你如何处理存储在数据库中的文本呢?从静态定义开始,到用户可修改的对象,以用户输入的数据结束.
假设您拥有使用不同语言环境的用户使用的数据库 - 您如何处理?你有多远国际化?你在哪里划线?什么解决方法可以阻止用户使用他们不理解的语言接收文本?
我的时区是CET(柏林).
在测试Joda的DateTime时,我发现了一些奇怪的事情:
new DateTime(1893, 4, 1, 0, 0, 0, 0);
=> java.lang.IllegalArgumentException: Illegal instant due to time zone offset transition:
new DateTime(1893, 3, 31, 0, 0, 0, 0).toDate();
=> Fri Mar 31 00:06:32 CET 1893
Run Code Online (Sandbox Code Playgroud)
时区的6分32秒移位导致时间不存在?
我必须说这是非常意外的,因为我没有指定任何时区信息,因此不希望遇到这种问题.
如果在1893年3月CET(柏林)不存在 - 为什么不new DateTime(1893, 3, 31, 0, 0, 0, 0)选择与我指定的时间相匹配的时区(即0分0秒)?
有什么方法可以使用DateTime获得正确的时间?
- 编辑 -
问题似乎是toDate().我在发布问题之前编辑了它.
Joda本身实际上工作正常:
new DateTime(1893, 3, 31, 0, 0, 0, 0);
=> 1893-01-01T00:00:00.000+00:53:28
Run Code Online (Sandbox Code Playgroud)
只是转换为Date将部分偏移移动到分钟和秒.
我正在尝试通过 Java 邮件 API 连接到使用 StartTLS 和自签名证书的邮件服务器。这似乎是一个问题,因为我找不到任何方法来设置 StartTLS 接受的证书或信任库。
Properties props = new Properties();
props.put("mail.imap.starttls.enable", "true");
props.put("mail.imap.starttls.required", "true");
Session session = Session.getInstance(props);
Store store = session.getStore("imap");
store.connect(hostName, port, userName, userPassword);
Run Code Online (Sandbox Code Playgroud)
当我按原样运行应用程序时,出现以下 PKIX 路径错误:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Run Code Online (Sandbox Code Playgroud)
我不想使用虚拟机参数,"-Djavax.net.ssl.trustStore"因为我希望能够控制每次访问的可信证书。
旁注:我见过人们使用"mail.imap.socketFactory.class"自定义SocketFactory的TrustManager. 但是当我这样做时,我的连接失败了
javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
Run Code Online (Sandbox Code Playgroud)
我认为这是因为设置套接字工厂实际上将使用基于 SSL 的 SMTP,而不是 StartTLS(它以纯文本连接启动,稍后切换到 TLS)。
我有办法告诉所有用户不再使用CVS模块(即项目)吗?
像"生产结束"或"转移到......"的旗帜?
我的意思是除了删除模块中的所有文件,就像我的同事喜欢做的那样.
我有一个像这样的XML结构:
<root>
<a/>
<b/>
<b/>
<a/>
<a/>
</root>
Run Code Online (Sandbox Code Playgroud)
我的XSD看起来像这样:
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element ref="a"/>
<xs:element ref="b"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="a" type="xs:string" />
<xs:element name="b" type="xs:string" />
Run Code Online (Sandbox Code Playgroud)
即我有两个不同子标签的随机序列.
使用XMLBeans我得到一个带有访问方法的Root对象:getAArray(),getBArray()
这是我的问题:
标签按名称分组,原始顺序(a,b,b,a,a)丢失.
但我需要知道这些元素的顺序.
使用XMLBeans,最好/最简单的方法是什么?
我正在尝试为 Eclipse 插件实现 HyperlinkDetector,回调方法为我提供了一个可以使用的 ITextViewer。
如何获取查看器 IDocument 的项目、IPath 或 IFile?
显然,IDocument 的概念是只允许访问内容,无论来源如何。我能想到的就是检查工作台中的活动编辑器部分......
由于我正在处理的是 Java 代码,因此实际类型是 JavaSourceViewer(如果有帮助的话)。
我们收到了这个错误
java.lang.NullPointerException
at java.util.ArrayList.<init>(Unknown Source)
at de.mystuff.ExtendedArrayList.<init>(ExtendedArrayList.java:38)
Run Code Online (Sandbox Code Playgroud)
其中ExtendedArrayList:38是
new ArrayList(new ArrayCollection<E>(data));
Run Code Online (Sandbox Code Playgroud)
简而言之:ArrayList构造函数有时似乎会阻塞我们自己开发的Collection实现ArrayCollection.
即使使用与我们的客户分发的完全相同的版本,我也无法在我的计算机上重现它.
但我并非100%确定他们正在使用我们所包含的JRE.所以,我搜索了一些ArrayList.java源代码,发现openJDK 6b17有这个
public ArrayList(Collection<? extends E> c) {
elementData = c.toArray();
size = elementData.length;
// c.toArray might (incorrectly) not return Object[] (see 6260652)
if (elementData.getClass() != Object[].class)
elementData = Arrays.copyOf(elementData, size, Object[].class);
}
Run Code Online (Sandbox Code Playgroud)
这是有道理的,因为如果没有数据我们的ArrayCollection.toArray()返回null.对于我们正在使用的1.5.0_09 Sun JDK/JRE实现,这个构造函数看起来很安全(并且毫无例外地工作).
但openJDK似乎只为unix世界发布.此代码是否也是Windows JRE的一部分?如果是这样,哪个版本?
注意:我知道我们必须修复我们的类,但我想确保我理解NullPointerException的原因.
在XSL中有没有办法更新全局变量?
我想检查一下我已经改变了哪些元素并采取相应的行动.这将要求我以某种方式将元素的名称添加到某种列表中,并在每次转换新元素时更新它.
但是,由于xsl:variable人们没有预期的"变量",所以一旦定义,我就无法添加任何东西.
我有多个包含的数据文件,因此使用仅知道当前节点集的xsl函数将无济于事.
==编辑==
这就是我现在的转型.但它将包括每次在不同子文件中重复引用的文件.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!-- include the contents of referenced files -->
<xsl:template match="reference">
<xsl:apply-templates select="document(@url)/data/node()" />
</xsl:template>
</xsl:transform>
Run Code Online (Sandbox Code Playgroud)
数据文件看起来像这样:
<data>
<reference url="another_data_file.xml"/>
... other stuff ...
</data>
Run Code Online (Sandbox Code Playgroud) java ×4
arraylist ×1
cvs ×1
eclipse ×1
eclipse-jdt ×1
jakarta-mail ×1
jodatime ×1
localization ×1
openjdk ×1
starttls ×1
xml ×1
xmlbeans ×1
xslt ×1
xslt-1.0 ×1