在logging.properties中自定义日志格式

我在Tomcat 7中配置日志格式需要一些指导。我在日志记录配置方面比较新,所以请原谅幽默这个问题,如果它看起来有点基础…… 使用logging.properties中配置的Tomcat中的标准日志记录显示以下格式的日志: Jun 6, 2011 9:27:00 AM com.class.Control_WS callWebService INFO: Response received from Control_WS:[Y] 我想自定义这些日志以压缩到一行,并将日期格式扩展到包括毫秒。 例: [2011-05-04T11:37:00.037|INFO|javax.enterprise.system.stream.out|Response recieved from Control_WS:[Y]] 这是我可以使用JUL做的事情还是我需要切换到LOG4J? 任何可以提供的简单示例或方向都将非常受欢迎。

使用DecimalFormat格式化大双数

我试图使用DecimalFormat格式化双数字只打印2位小数的数字,如果它有小数部分,我想打印数字原样。 当数字很小时,下面的代码工作正常但数字很大,它没有按预期工作。 DecimalFormat df = new DecimalFormat(“#.##”); //have tried just # too double d1 = 56789d; System.out.println(df.format(d1)); //works fine – prints 56789 double d2 = 1234567879123456789d; System.out.println(df.format(d2)); // does not work 第二个输出1234567879123456770而我想要1234567879123456789 。 对于带小数部分的双精度值,我只想保留两个小数点。 什么出错的建议?

使用Java将多边形拉伸到其他多边形

我的问题是我有一个带有小透视的矩形,我想将它拉回来再次呈现为矩形。 为了直观地表现它,我目前在我的图像中有类似红色的形状,我有4个Points (这个形状的每个角落)。 结果我想有一些类似蓝色的形状,我已经有了它的Rectangle对象。 我想知道是否有一种方法来复制多边形并将其绘制为另一个多边形拉伸。 我找到了适合Android的东西(setPolyToPoly),但我找不到像这样的东西。 是否有一些参考或代码示例执行此操作,或者可能有些想法如何解决此问题?

从JavaFX TableView一次删除多行的问题

我正在尝试创建一个按钮,当选择TableView中的多行时,将删除所有选定的行。 我正在使用getSelectedIndicies创建一个可观察的列表,但它无法正常工作。 如果我选择前三行,我会打印出指示,因为它会删除它们并打印0,1然后它会删除第一行和第三行,但三行的中间不会被删除。 delBtn.setOnAction(new EventHandler() { @Override public void handle(ActionEvent e) { ObservableList index = table.getSelectionModel().getSelectedIndices(); for (int location: index) { System.out.println(location); data.remove(location); } table.getSelectionModel().clearSelection(); } });

使用setter将服务注入Enum ……糟糕的做法?

这被认为是不好的做法吗? 基本上,基于枚举我想在接口中调用特定方法。 每个枚举都有自己的接口实现(WalkImpl,RunImpl,JogIMpl等),所有这些都基于ActivityService接口。 我只是想知道这是将服务“注入”Enum的正确方法。 我这样做是因为我无法自动提供服务。 谢谢 @Component public class HelloWorldImpl implements HelloWorld { private enum MyEnum{ WALK { @Override public void execute() { System.out.println(“I am walking”); activityService.doSomethingWithMe(this.name()); } }, RUN{ @Override public void execute() { System.out.println(“I am running”); } },JOG{ @Override public void execute() { System.out.println(“I am jogging!”); } }, SKIP{ @Override public void execute() […]

Java swing 1.6 Textinput就像firefox吧

我想创建一个看起来像firefox地址栏的textwidget /组件。 我的意思是一个Textfield,它允许我在场内放置小按钮(例如取消/重装/ ……) 我尝试通过创建自定义布局管理器来自定义JLayeredPane,该管理器最大化Textfield,并将其余部分从右到左放置。 我的问题是,这给了绘画问题,我不会总是看到我在文本字段中添加的项目。 这可能与Jython有关,我尝试将java.lang.Integer(1)给JLayeredPane.add 。 然而,层的排序与文档所说的完全相反。 为了实现这个目的,我派生了我自己的JLayeredPane类并重新定义了paint来调用paintComponents ,而paintComponents又遍历所有组件并调用它们的paint方法,从文本框开始,其余部分。 但是我并不总是立即得到更新,这意味着按钮被隐藏/仅部分显示,我无法与按钮交互。 我有什么可以在屏幕上看到更新(它隐藏在缓冲区?)) 我怎样才能使它与按钮交互? 如何缩短Texxtfield,以便文本在到达Textfield的末尾之前开始滚动到前面,这样文本就不会被按钮隐藏? 我仍然希望Textfields区域在按钮下方扩展 编辑 :在我使窗口变小之后,按钮仅显示在正确的位置,之后它也是可点击的 edit2 :我自由地将答案归结为此,隐藏了很多按钮代码/不必要的东西 import java.awt.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.*; public class playground { private Icon errorIcon = UIManager.getIcon(“OptionPane.errorIcon”); private Icon infoIcon = UIManager.getIcon(“OptionPane.informationIcon”); private Icon warnIcon = UIManager.getIcon(“OptionPane.warningIcon”); public playground() { JPanel panel = new JPanel(); […]

getDefaultSharedPreferences上的NullPointerException

我正在基于开发人员指南创建一个PreferenceFragment ,但是当我尝试恢复保存的用户首选项时,我在onCreate()的getDefaultSharedPreferences()调用中得到一个NullPointerException 。 我从xml中扩充了PreferenceFragment ,我也设置了默认值。 getDefaultSharedPreferencesName()中的getDefaultSharedPreferences()抛出exception。 这是PreferenceFragment类: public class SettingsFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener { public static final String KEY_MAX_WALK_DISTANCE_PREFERENCE = “max_walk_distance_preference”; public static final String KEY_MAX_SEARCH_TIME_PREFERENCE = “max_search_time_preference”; Context context = getActivity(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Load the preferences from an XML resource addPreferencesFromResource(R.xml.preferences); // load user preferences SharedPreferences sharedPreferences […]

加快java中的复制速度

我的程序将所有数据从外部驱动器复制到我的电脑上的特定位置。 这是我的计划: – import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class Copy { public static void main(String[] args) { String[] letters = new String[]{“A”, “B”, “C”, “D”, “E”, “F”, “G”, “H”, “I”}; File[] drives = new File[letters.length]; int copy=0;int l;File files[]=null;boolean pluggedIn=false; FileInputStream fis=null; FileOutputStream fos=null; boolean[] isDrive = new boolean[letters.length]; […]

将Document添加到索引后忘记关闭Lucene IndexWriter

我有一个程序运行2天来为大约1.6亿个文本文件构建一个Lucene索引,在程序结束后,我尝试搜索索引并发现索引没有正确构建,indexReader.numDocs()返回0.我检查过索引目录,看起来不错,所有的索引数据似乎都在那里,目录的大小是1.5千兆字节。 我检查了我的代码,发现我忘了调用indexWriter.optimize()和indexWriter.close(),我想知道是否有可能重新优化()索引,所以我不需要重建整个索引从头开始? 我真的不希望该计划再花2天时间。

如何在不使用foreach的情况下组合两个列表?

最初,我有这个代码: String[] A; String[] B; //… List myList= new ArrayList(A.length + B.length); for (int i= 0; i< B.length; i++){ myList.add(A[i]); myList.add("*".equals(B[i]) ? B[i] : doSomethingWith(B[i])); } 如果使用,优选Java 8,如何重构? 例如,我有这些数组 A = {“一”,“两”,“三”,“四”} B = {“五”,“六”,“七”,“八”} 在代码的末尾,myList将是: myList = {“one”,“five”,“two”,“six”,“three”,“seven”,“four”,“eight”}